1(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([[2169],{ 2 3/***/ 635768: 4/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 5 6"use strict"; 7/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8/* harmony export */ O: function() { return /* binding */ ERROR_CODES; } 9/* harmony export */ }); 10/* !!!!!!!! LEGACY CODE - USE THE error.ts IMPORT FROM CORE-UI !!!!!!!! */ /* !!!!!!!! LEGACY CODE - USE THE error.ts IMPORT FROM CORE-UI !!!!!!!! */ const ERROR_CODES = { 11 WF_COMMON_001: "WF_COMMON_001", 12 WF_COMMON_002: "WF_COMMON_002", 13 WF_CART_001: "WF_CART_001", 14 WF_CART_002: "WF_CART_002", 15 WF_CART_003: "WF_CART_003", 16 WF_CART_006: "WF_CART_006", 17 WF_CART_008: "WF_CART_008", 18 WF_CART_009: "WF_CART_009", 19 WF_CART_010: "WF_CART_010", 20 WF_FRESHDESK_001: "WF_FRESHDESK_001", 21 WF_CUSTOMER_001: "WF_CUSTOMER_001", 22 WF_CUSTOMER_002: "WF_CUSTOMER_002", 23 WF_CUSTOMER_003: "WF_CUSTOMER_003", 24 WF_CUSTOMER_004: "WF_CUSTOMER_004", 25 WF_CUSTOMER_005: "WF_CUSTOMER_005", 26 WF_CUSTOMER_006: "WF_CUSTOMER_006", 27 WF_CUSTOMER_007: "WF_CUSTOMER_007", 28 WF_CUSTOMER_008: "WF_CUSTOMER_008", 29 WF_PAYMENT_001: "WF_PAYMENT_001", 30 WF_PAYMENT_002: "WF_PAYMENT_002", 31 WF_PAYMENT_003: "WF_PAYMENT_003", 32 WF_PAYMENT_004: "WF_PAYMENT_004", 33 WF_PAYMENT_005: "WF_PAYMENT_005", 34 WF_STORE_001: "WF_STORE_001", 35 WF_STORE_002: "WF_STORE_002", 36 WF_STORE_003: "WF_STORE_003", 37 WF_STORE_004: "WF_STORE_004", 38 WF_STORE_005: "WF_STORE_005", 39 WF_ORDER_001: "WF_ORDER_001", 40 WF_CUSTOMER_031: "WF_CUSTOMER_031", 41 WF_CUSTOMER_032: "WF_CUSTOMER_032" 42}; 43 /* !!!!!!!! LEGACY CODE - USE THE error.ts IMPORT FROM CORE-UI !!!!!!!! */ 44 45/***/ }), 46 47/***/ 677674: 48/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 49 50"use strict"; 51/* harmony export */ __webpack_require__.d(__webpack_exports__, { 52/* harmony export */ Mh: function() { return /* binding */ checkGiftCardBalance; }, 53/* harmony export */ OV: function() { return /* binding */ storeForagePaymentMethod; }, 54/* harmony export */ P3: function() { return /* binding */ deleteEbtPaymentFromCart; }, 55/* harmony export */ Tx: function() { return /* binding */ getForageSessionToken; }, 56/* harmony export */ Y$: function() { return /* binding */ deletePaymentFromCart; }, 57/* harmony export */ sm: function() { return /* binding */ createAdyenOrder; }, 58/* harmony export */ zH: function() { return /* binding */ createForagePaymentObject; } 59/* harmony export */ }); 60/* harmony import */ var _Lib_configs_HeadersConfig__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(420957); 61/* harmony import */ var _Lib_types_payment_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(108204); 62/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(445913); 63/* harmony import */ var _constants_RestEndpoints__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(179901); 64 65 66 67 68const checkGiftCardBalance = (payload)=>{ 69 return _api__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .ZP.post(_constants_RestEndpoints__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z.PAYMENT.CHECK_GIFT_CARD_BALANCE, payload); 70}; 71// Adyen Orders allow us to make a partial payment 72const createAdyenOrder = (payload)=>{ 73 return _api__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .ZP.post(_constants_RestEndpoints__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z.PAYMENT.CREATE_ADYEN_ORDER, payload); 74}; 75// Get Forage token to initilize the Forage EBT/SNAP payment component 76const getForageSessionToken = ()=>{ 77 return _api__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .ZP.get(_constants_RestEndpoints__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z.PAYMENT.GET_FORAGE_SESSION_TOKEN); 78}; 79// Store a Forage payment method 80const storeForagePaymentMethod = (payload)=>{ 81 const headers = (0,_Lib_configs_HeadersConfig__WEBPACK_IMPORTED_MODULE_0__/* .buildHeaders */ .us)(_Lib_configs_HeadersConfig__WEBPACK_IMPORTED_MODULE_0__/* .cartIdHeader */ .ZK); 82 return _api__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .ZP.post(_constants_RestEndpoints__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z.PAYMENT.STORE_FORAGE_PAYMENT_METHOD, payload, { 83 headers 84 }); 85}; 86// Create a payment object and get the reference in the response 87const createForagePaymentObject = ()=>{ 88 const headers = (0,_Lib_configs_HeadersConfig__WEBPACK_IMPORTED_MODULE_0__/* .buildHeaders */ .us)(_Lib_configs_HeadersConfig__WEBPACK_IMPORTED_MODULE_0__/* .cartIdHeader */ .ZK); 89 return _api__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .ZP.post(_constants_RestEndpoints__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z.PAYMENT.CREATE_FORAGE_PAYMENT_OBJECT, {}, { 90 headers 91 }); 92}; 93// Remove a payment (EBT or gift card) from the cart 94const deletePaymentFromCart = (payload)=>{ 95 const headers = (0,_Lib_configs_HeadersConfig__WEBPACK_IMPORTED_MODULE_0__/* .buildHeaders */ .us)(_Lib_configs_HeadersConfig__WEBPACK_IMPORTED_MODULE_0__/* .cartIdHeader */ .ZK); 96 return _api__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .ZP.delete(_constants_RestEndpoints__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z.PAYMENT.DELET
96E_PAYMENT_FROM_CART, { 97 headers, 98 data: payload 99 }); 100}; 101// Detach the EBT payment from the cart â used by CHANGE, by the wrong-PIN 102// auto-unlock, and by the abandoned-checkout cleanups. 103const deleteEbtPaymentFromCart = ()=>deletePaymentFromCart({ 104 paymentMethodType: _Lib_types_payment_types__WEBPACK_IMPORTED_MODULE_1__/* .DeletePaymentMethodType */ .z.EBT 105 }); 106 107 108/***/ }), 109 110/***/ 722857: 111/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 112 113"use strict"; 114/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(785893); 115/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(667294); 116/* harmony import */ var _mui_icons_material_InfoOutlined__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(402548); 117/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_utils_classNames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(221504); 118/* harmony import */ var _Components_ui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(836455); 119/* harmony import */ var _Components_ui_modal__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(589863); 120/* harmony import */ var _AddressVerificationModal_module_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(242124); 121/* harmony import */ var _AddressVerificationModal_module_scss__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_AddressVerificationModal_module_scss__WEBPACK_IMPORTED_MODULE_5__); 122 123 124 125 126 127 128 129const AddressVerificationModal = (param)=>{ 130 let { isOpen, onSubmit, isSubmitting, onClose, verifiedAddress, isEnteredAddrVerificationStatusFailed, setUseVerifiedAddress, userEnteredAddress, isUserEnteredAddressValid = true, contentTranslation = { 131 verifyAddress: "VERIFY ADDRESS", 132 selectSuggestions: " Select one of the following:", 133 recommended: "RECOMMENDED", 134 entered: "YOU ENTERED", 135 couldNotVerifyError: "We could not verify your address. Check for any errors or missing information, such as apartment number.", 136 edit: "Edit", 137 useUnverifiedAddress: "Use unverified address", 138 editAddress: "Edit Address", 139 continue: "Continue" 140 }, isCheckout } = param; 141 var _userEnteredAddress_address2, _userEnteredAddress_address21; 142 return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Components_ui_modal__WEBPACK_IMPORTED_MODULE_4__/* .Modal */ .u, { 143 show: isOpen, 144 onClose: onClose, 145 contentClassName: (_AddressVerificationModal_module_scss__WEBPACK_IMPORTED_MODULE_5___default()["address-verification-modal__content"]), 146 onCloseOuterClick: false, 147 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", { 148 className: (_AddressVerificationModal_module_scss__WEBPACK_IMPORTED_MODULE_5___default()["address-verification-modal__body"]), 149 children: [ 150 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("span", { 151 children: [ 152 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h2", { 153 className: (_AddressVerificationModal_module_scss__WEBPACK_IMPORTED_MODULE_5___default()["address-verification-modal__title"]), 154 children: contentTranslation.verifyAddress 155 }), 156 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("p", { 157 className: (_AddressVerificationModal_module_scss__WEBPACK_IMPORTED_MODULE_5___default()["address-verification-modal__subtitle"]), 158 children: [ 159 "Using an unverified address may cause delivery issues.", 160 !isEnteredAddrVerificationStatusFailed && contentTranslation.selectSuggestions 161 ] 162 }) 163 ] 164 }), 165 verifiedAddress && !isEnteredAddrVerificationStatusFailed ? /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", { 166 htmlFor: "recommended-address", 167 children: [ 168 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", { 169 id: "recommended-address", 170 name: "verified-addresses", 171 type: "radio", 172 className: (_AddressVerificationModal_module_scss__WEBPACK_IMPORTED_MODULE_5___default()["input-radio"]), 173 onChange: ()=>setUseVerifiedAddress(true), 174 defaultChecked: true 175 }), 176 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", { 177 className: (_AddressVerificationModal_module_scss__WEBPACK_IMPORTED_MODULE_5___default()["address-ver
177ification-modal__card"]), 178 children: [ 179 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 180 className: (_AddressVerificationModal_module_scss__WEBPACK_IMPORTED_MODULE_5___default()["address-verification-modal__card-title"]), 181 children: contentTranslation.recommended 182 }), 183 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 184 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", { 185 children: highlightWordDifferences(userEnteredAddress.address1, verifiedAddress.address1.toLowerCase().replace(((_userEnteredAddress_address2 = userEnteredAddress.address2) === null || _userEnteredAddress_address2 === void 0 ? void 0 : _userEnteredAddress_address2.toLowerCase()) || "", "")) 186 }) 187 }), 188 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 189 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", { 190 children: highlightWordDifferences(//NOTE: Extracting address2 from the API address1 191 findExtraSubstring(verifiedAddress.address1.toLowerCase().replace(((_userEnteredAddress_address21 = userEnteredAddress.address2) === null || _userEnteredAddress_address21 === void 0 ? void 0 : _userEnteredAddress_address21.toLowerCase()) || "", ""), verifiedAddress.address1.toLowerCase()), userEnteredAddress.address2) 192 }) 193 }), 194 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", { 195 children: [ 196 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", { 197 children: highlightWordDifferences(userEnteredAddress.city, verifiedAddress.city) 198 }), 199 ",", 200 " ", 201 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", { 202 children: highlightWordDifferences(userEnteredAddress.state, verifiedAddress.state) 203 }) 204 ] 205 }), 206 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 207 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", { 208 children: highlightWordDifferences(userEnteredAddress.postalCode, verifiedAddress.postalCode) 209 }) 210 }) 211 ] 212 }) 213 ] 214 }) : /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", { 215 className: (_AddressVerificationModal_module_scss__WEBPACK_IMPORTED_MODULE_5___default()["address-verification-modal__error-card"]), 216 children: [ 217 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_icons_material_InfoOutlined__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z, {}), 218 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", { 219 className: (_AddressVerificationModal_module_scss__WEBPACK_IMPORTED_MODULE_5___default()["address-verification-modal__error-card__message"]), 220 children: contentTranslation.couldNotVerifyError 221 }) 222 ] 223 }), 224 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", { 225 htmlFor: "entered-address", 226 children: [ 227 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", { 228 id: "entered-address", 229 name: "verified-addresses", 230 type: "radio", 231 className: (_AddressVerificationModal_module_scss__WEBPACK_IMPORTED_MODULE_5___default()["input-radio"]), 232 onChange: ()=>setUseVerifiedAddress(false), 233 defaultChecked: isEnteredAddrVerificationStatusFailed 234 }), 235 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", { 236 className: (_AddressVerificationModal_module_scss__WEBPACK_IMPORTED_MODULE_5___default()["address-ver
236ification-modal__card"]), 237 children: [ 238 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", { 239 className: (_AddressVerificationModal_module_scss__WEBPACK_IMPORTED_MODULE_5___default()["address-verification-modal__card-title"]), 240 children: [ 241 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("span", { 242 children: [ 243 " ", 244 contentTranslation.entered 245 ] 246 }), 247 !isEnteredAddrVerificationStatusFailed && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 248 className: (_AddressVerificationModal_module_scss__WEBPACK_IMPORTED_MODULE_5___default()["address-verification-modal__card-edit-text-button"]), 249 onClick: ()=>onClose(), 250 children: contentTranslation.edit 251 }) 252 ] 253 }), 254 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 255 children: userEnteredAddress.address1 256 }), 257 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 258 children: userEnteredAddress.address2 259 }), 260 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", { 261 children: [ 262 userEnteredAddress.city, 263 ", ", 264 userEnteredAddress.state 265 ] 266 }), 267 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 268 children: userEnteredAddress.postalCode 269 }) 270 ] 271 }) 272 ] 273 }), 274 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 275 className: (_AddressVerificationModal_module_scss__WEBPACK_IMPORTED_MODULE_5___default()["address-verification-modal__footer"]), 276 children: isEnteredAddrVerificationStatusFailed ? /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { 277 children: [ 278 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Components_ui__WEBPACK_IMPORTED_MODULE_3__/* .Button */ .zx, { 279 type: "button", 280 className: (0,_wildfork_commercetools_core_ui_dist_src_lib_utils_classNames__WEBPACK_IMPORTED_MODULE_2__["default"])((_AddressVerificationModal_module_scss__WEBPACK_IMPORTED_MODULE_5___default()["address-verification-modal__button"]), "action action--secondary"), 281 onClick: isCheckout ? ()=>onClose(true) : ()=>onSubmit(), 282 disabled: !isUserEnteredAddressValid || isSubmitting, 283 children: contentTranslation.useUnverifiedAddress 284 }), 285 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Components_ui__WEBPACK_IMPORTED_MODULE_3__/* .Button */ .zx, { 286 type: "button", 287 className: (0,_wildfork_commercetools_core_ui_dist_src_lib_utils_classNames__WEBPACK_IMPORTED_MODULE_2__["default"])("action action--primary", (_AddressVerificationModal_module_scss__WEBPACK_IMPORTED_MODULE_5___default()["address-ver
287ification-modal__button"])), 288 onClick: ()=>onClose(), 289 disabled: !isUserEnteredAddressValid || isSubmitting, 290 children: contentTranslation.editAddress 291 }) 292 ] 293 }) : /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Components_ui__WEBPACK_IMPORTED_MODULE_3__/* .Button */ .zx, { 294 type: "button", 295 className: (0,_wildfork_commercetools_core_ui_dist_src_lib_utils_classNames__WEBPACK_IMPORTED_MODULE_2__["default"])("action action--primary", (_AddressVerificationModal_module_scss__WEBPACK_IMPORTED_MODULE_5___default()["address-verification-modal__button"])), 296 onClick: ()=>onSubmit(), 297 disabled: !isUserEnteredAddressValid || isSubmitting, 298 children: contentTranslation.continue 299 }) 300 }) 301 ] 302 }) 303 }); 304}; 305/* harmony default export */ __webpack_exports__.Z = (AddressVerificationModal); 306const highlightWordDifferences = function() { 307 let originalString = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "", comparisonString = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : ""; 308 const originalWords = originalString.split(" "); 309 const comparisonWords = comparisonString.split(" "); 310 return comparisonWords.map(function() { 311 let word = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "", index = arguments.length > 1 ? arguments[1] : void 0; 312 var _originalWords_index; 313 const originalWord = originalWords === null || originalWords === void 0 ? void 0 : (_originalWords_index = originalWords[index]) === null || _originalWords_index === void 0 ? void 0 : _originalWords_index.toLocaleLowerCase(); 314 const comparisonWord = word.toLocaleLowerCase(); 315 if (index >= originalWords.length || originalWord !== comparisonWord) { 316 return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("b", { 317 children: [ 318 " ", 319 word 320 ] 321 }, index); 322 } 323 return " ".concat(word); 324 }); 325}; 326// const highlightCityDifferences = ( 327// userEnteredCity: string, 328// verifiedCity: string 329// ) => { 330// const correctedCity = 331// userEnteredCity.toLowerCase() !== verifiedCity.toLowerCase() 332// ? userEnteredCity 333// : verifiedCity; 334// return <b>{correctedCity.toUpperCase()}</b>; 335// }; 336/** 337 * The function `findExtraSubstring` compares two strings and returns the extra substring present in 338 * @param {string} [baseString] - The `baseString` parameter is a string that serves as the base for 339 * @param {string} [compareString] - The `compareString` parameter is a string that will be compared to 340 * @returns {string} 341 */ const findExtraSubstring = function() { 342 let baseString = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "", compareString = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : ""; 343 if (compareString.startsWith(baseString)) { 344 return compareString.slice(baseString.length); 345 } else { 346 return compareString === compareString.toUpperCase() ? compareString.toUpperCase() : compareString; 347 } 348}; 349 350 351/***/ }), 352 353/***/ 981496: 354/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 355 356"use strict"; 357/* harmony export */ __webpack_require__.d(__webpack_exports__, { 358/* harmony export */ le: function() { return /* binding */ handleGiftCardErrors; } 359/* harmony export */ }); 360/* unused harmony exports errorCodeMap, GENERIC_GIFT_CARD_ERROR */ 361const errorCodeMap = { 362 WF_PAYMENT_019: "This gift card number and/or pin is invalid. Please check the numbers and try again.", 363 WF_PAYMENT_020: "Your gift card couldnât be processed. Please verify the details or use a different payment method." 364}; 365const GENERIC_GIFT_CARD_ERROR = "Sorry, an error occurred, and gift cards are temporarily unavailable. Please try again later."; 366const handleGiftCardErrors = (error)=>{ 367 var _error_response_data, _error_response; 368 if (((_error_response = error.response) === null || _error_response === void 0 ? void 0 : (_error_response_data = _error_response.data) === null || _error_response_data === void 0 ? void 0 : _error_response_data.errors) && Array.isArray(error.response.data.errors)) { 369 const errorMessages = error.response.data.errors.map((err)=>{
370 return errorCodeMap[err.code] || GENERIC_GIFT_CARD_ERROR; 371 }); 372 // Filter out duplicate messages 373 return [ 374 ...new Set(errorMessages) 375 ]; 376 } 377 return [ 378 GENERIC_GIFT_CARD_ERROR 379 ]; 380}; 381 382 383/***/ }), 384 385/***/ 333573: 386/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 387 388"use strict"; 389/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(785893); 390/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_constants_locale__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(808439); 391/* harmony import */ var lodash_noop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(850308); 392/* harmony import */ var lodash_noop__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_noop__WEBPACK_IMPORTED_MODULE_2__); 393/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(811163); 394/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_router__WEBPACK_IMPORTED_MODULE_3__); 395/* harmony import */ var react_final_form__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(166688); 396/* harmony import */ var _Components_forms_formFields_textField_FormTextField__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(833936); 397/* harmony import */ var _Components_forms_helpers_commonFormSubmission__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(189058); 398/* harmony import */ var _Components_ui__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(836455); 399/* harmony import */ var _Constants_snackbar__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(380254); 400/* harmony import */ var _Lib_helpers_forms_handlers__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(5227); 401/* harmony import */ var _Lib_hooks_useAuthHooks__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(593917); 402/* harmony import */ var _Lib_hooks_useFormFieldValidation__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(519511); 403/* harmony import */ var _Lib_store_hooks__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(267097); 404/* harmony import */ var _Lib_utils_locale__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(225220); 405/* harmony import */ var _formMessage_FormMessage__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(608904); 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421const ForgotPasswordForm = (param)=>{ 422 let { onClickCancel, isCheckout, isMaxAttemptsExceeded = false } = param; 423 const dispatch = (0,_Lib_store_hooks__WEBPACK_IMPORTED_MODULE_11__/* .useAppDispatch */ .T)(); 424 const currentLocale = _wildfork_commercetools_core_ui_dist_src_lib_constants_locale__WEBPACK_IMPORTED_MODULE_1__.CURRENT_LOCALE; 425 const { forgotPasswordState, setForgotPasswordState } = (0,_Lib_hooks_useAuthHooks__WEBPACK_IMPORTED_MODULE_9__/* .useForgotPassword */ .pO)(); 426 const errorCodeTranslation = { 427 WF_CUSTOMER_001: (0,_Lib_utils_locale__WEBPACK_IMPORTED_MODULE_12__.t)("customer.form_errors.existing_account_html"), 428 WF_CUSTOMER_002: (0,_Lib_utils_locale__WEBPACK_IMPORTED_MODULE_12__.t)("customer.form_errors.blank_email"), 429 WF_CUSTOMER_008: _Constants_snackbar__WEBPACK_IMPORTED_MODULE_8__/* .AUTO_ERROR_CODE_MESSAGE_TRANSLATION */ .uK.WF_CUSTOMER_008(currentLocale === null || currentLocale === void 0 ? void 0 : currentLocale.languageCode) 430 }; 431 const validationTranslation = { 432 allFieldsBlank: (0,_Lib_utils_locale__WEBPACK_IMPORTED_MODULE_12__.t)("customer.form_errors.all_fields_blank"), 433 emailBlank: (0,_Lib_utils_locale__WEBPACK_IMPORTED_MODULE_12__.t)("customer.form_errors.blank_email"), 434 emailNeedsContentAfterAtSymbol: (0,_Lib_utils_locale__WEBPACK_IMPORTED_MODULE_12__.t)("customer.form_errors.format_ends_with_at") 435 }; 436 const { asPath } = (0,next_router__WEBPACK_IMPORTED_MODULE_3__.useRouter)(); 437 const { touched, setTouched, setFormError, formErrorMessages, setFormActionIsActive } = (0,_Lib_hooks_useFormFieldValidation__WEBPACK_IMPORTED_MODULE_10__/* .useFormFieldValidation */ .Xl)({ 438 type: _Lib_hooks_useFormFieldValidation__WEBPACK_IMPORTED_MODULE_10__/* .FORM_TYPES */ .dz.FORGOT_PASSWORD, 439 touched: true, 440 formState: forgotPasswordState, 441 languageCode: currentLocale === null || currentLocale === void 0 ? void 0 : currentLocale.languageCode, 442 errorCodeTranslation, 443 validationTranslation, 444 formAction: ()=>{ 445 (0,_Components_forms_helpers_commonFormSubmission__WEBPACK_IMPORTED_MODULE_6__/* .submitFormActionForgotPassword */ .yL)({ 446 dispatch, 447 payload: forgotPasswordState, 448 setFormError, 449 errorCodeTranslation, 450 languageCode: currentLocale === null || currentLocale === void 0 ? void 0 : currentLocale.languageCode, 451 path: asPath 452 }); 453 } 454 }); 455 const handleOnClickSubmit = async (e)=>{ 456 e.preventDefault(); 457 setFormActionIsActive(true); 458 }; 459 return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_final_form__WEBPACK_IMPORTED_MODULE_4__.Form, { 460 "data-testid": "forgot-password-form", 461 onSubmit: (lodash_noop__WEBPACK_IMPORTED_MODULE_2___default()), 462 render: (param)=>{ 463 let {} = param; 464 return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("form", { 465 className: "form form--recover-customer-password", 466 onSubmit: (lodash_noop__WEBPACK_IMPORTED_MODULE_2___default()), 467 children: [ 468 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_formMessage_FormMessage__WEBPACK_IMPORTED_MODULE_13__/* .FormMessage */ .z, { 469 message: (0,_Lib_utils_locale__WEBPACK_IMPORTED_MODULE_12__.t)("form.error_heading"), 470 type: "error", 471 errors: formErrorMessages 472 }), 473 isMaxAttemptsExceeded && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", { 474 children: (0,_Lib_utils_locale__WEBPACK_IMPORTED_MODULE_12__.t)("customer.form_errors.password_reset_on_max_attempts") 475 }), 476 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Components_forms_formFields_textField_FormTextField__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, { 477 name: "email", 478 label: "Email", 479 "data-testid": "form_field-email", 480 validate: (0,_Lib_hooks_useAuthHooks__WEBPACK_IMPORTED_MODULE_9__/* .authFormFieldValidatorSwitch */ .FI)("email", { 481 required: (0,_Lib_utils_locale__WEBPACK_IMPORTED_MODULE_12__.t)("customer.form_errors.blank_field"), 482 email: (0,_Lib_utils_locale__WEBPACK_IMPORTED_MODULE_12__.t)("customer.form_errors.invalid_email") 483 }), 484 outlined: !isCheckout, 485 value: forgotPasswordState.email, 486 onChange: (e)=>{ 487 (0,_Lib_helpers_forms_handlers__WEBPACK_IMPORTED_MODULE_14__/* .formStateChangeHandler */ .G)({ 488 key: "email", 489 value: e.target.value.trim(), 490 formState: forgotPasswordState, 491 setTouched, 492 formStateSetter: setForgotPasswordState 493 }); 494 }, 495 required: true 496 }), 497 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", { 498 className: "form__actions", 499 children: [ 500 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Components_ui__WEBPACK_IMPORTED_MODULE_7__/* .Button */ .zx, {
501 className: "action", 502 "data-testid": "form_field-button-submit", 503 onClick: handleOnClickSubmit, 504 disabled: !touched, 505 type: "submit", 506 children: "Submit" 507 }), 508 " ", 509 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Components_ui__WEBPACK_IMPORTED_MODULE_7__/* .Button */ .zx, { 510 className: "action action--secondary", 511 onClick: onClickCancel, 512 children: "Cancel" 513 }) 514 ] 515 }) 516 ] 517 }); 518 } 519 }); 520}; 521/* harmony default export */ __webpack_exports__.Z = (ForgotPasswordForm); 522 523 524/***/ }), 525 526/***/ 833936: 527/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 528 529"use strict"; 530/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(785893); 531/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(667294); 532/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_utils_classNames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(221504); 533/* harmony import */ var react_final_form__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(166688); 534/* harmony import */ var _Components_ui__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(836455); 535/* harmony import */ var _FormTextField_module_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(160186); 536/* harmony import */ var _FormTextField_module_scss__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_FormTextField_module_scss__WEBPACK_IMPORTED_MODULE_5__); 537 538 539 540 541 542 543const FormTextField = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((param, ref)=>{ 544 let { name = "", type = "text", outlined = false, validate, showToolTip = true, toolTipData, onChange, inputProps, withPreview = false, value, isDisabled, formatOnBlur = true, format = (value)=>value, customFormat, multiline = false, ...restProps } = param; 545 const classNames = (0,_wildfork_commercetools_core_ui_dist_src_lib_utils_classNames__WEBPACK_IMPORTED_MODULE_2__["default"])((_FormTextField_module_scss__WEBPACK_IMPORTED_MODULE_5___default().form__field), (_FormTextField_module_scss__WEBPACK_IMPORTED_MODULE_5___default().text__field), restProps.className); 546 const tooltipIcon = type === "password" ? "lock" : undefined; 547 return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_final_form__WEBPACK_IMPORTED_MODULE_3__.Field, { 548 name: name, 549 validate: validate, 550 formatOnBlur: formatOnBlur, 551 type: type, 552 format: (value, name)=>{ 553 const result = value === null || value === void 0 ? void 0 : value.trim(); 554 return format === null || format === void 0 ? void 0 : format(result, name); 555 }, 556 children: (param)=>{ 557 let { input, meta } = param; 558 const inputValue = customFormat ? customFormat(input.value) : input.value; 559 return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 560 className: classNames, 561 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Components_ui__WEBPACK_IMPORTED_MODULE_4__/* .TextField */ .nv, { 562 ...restProps, 563 ...input, 564 ...inputProps, 565 value: value || inputValue || "", 566 onChange: (event)=>{ 567 var _input_onChange; 568 (_input_onChange = input.onChange) === null || _input_onChange === void 0 ? void 0 : _input_onChange.call(input, event); 569 onChange === null || onChange === void 0 ? void 0 : onChange(event); 570 }, 571 withPreview: withPreview, 572 tooltipData: toolTipData !== null && toolTipData !== void 0 ? toolTipData : showToolTip && (meta === null || meta === void 0 ? void 0 : meta.touched) && meta.error, 573 tooltipIcon: showToolTip && tooltipIcon, 574 className: "".concat(outlined && (_FormTextField_module_scss__WEBPACK_IMPORTED_MODULE_5___default().standard_outlined)), 575 validate: validate, 576 touched: meta === null || meta === void 0 ? void 0 : meta.touched, 577 dirty: meta === null || meta === void 0 ? void 0 : meta.dirty, 578 supressErrorStylesOnFocus: true, 579 formTextFieldValidation: true, 580 isDisabled: isDisabled, 581 ref: ref, 582 multiline: multiline 583 }) 584 }); 585 } 586 }); 587}); 588FormTextField.displayName = "FormTextField"; 589/* harmony default export */ __webpack_exports__.Z = (FormTextField); 590 591 592/***/ }), 593 594/***/ 608904: 595/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 596 597"use strict"; 598/* harmony export */ __webpack_require__.d(__webpack_exports__, { 599/* harmony export */ z: function() { return /* binding */ FormMessage; } 600/* harmony export */ }); 601/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(785893); 602/* harmony import */ var _Components_ui_Link_Link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(317641); 603/* harmony import */ var _shared_LinkErrorMessage__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(424802); 604 605 606 607const FormMessage = (props)=>{ 608 var _props_errors; 609 const errorMessages = (props === null || props === void 0 ? void 0 : (_props_errors = props.errors) === null || _props_errors === void 0 ? void 0 : _props_errors.length) ? [ 610 ...props.errors 611 ] : (props === null || props === void 0 ? void 0 : props.error) ? [ 612 props === null || props === void 0 ? void 0 : props.error 613 ] : []; 614 const modifiedErrorMessage = []; 615 errorMessages === null || errorMessages === void 0 ? void 0 : errorMessages.forEac
615h((msg)=>{ 616 const subMessages = (msg === null || msg === void 0 ? void 0 : msg.includes(". ")) ? msg.split(". ") : [ 617 msg 618 ]; // if there are multiple sentences, split them up 619 subMessages === null || subMessages === void 0 ? void 0 : subMessages.forEach((error)=>error && modifiedErrorMessage.push(error.trim()) // the error condition prevents adding an empty string from the tail end of a split 620 ); 621 }); 622 return (modifiedErrorMessage === null || modifiedErrorMessage === void 0 ? void 0 : modifiedErrorMessage.length) > 0 ? /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", { 623 className: "form__status form__status--".concat(props.type), 624 children: [ 625 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", { 626 className: "form__message", 627 children: props.message 628 }), 629 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("ul", { 630 className: "form__errors", 631 children: modifiedErrorMessage === null || modifiedErrorMessage === void 0 ? void 0 : modifiedErrorMessage.map((error, index)=>/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("li", { 632 className: "error", 633 children: (error === null || error === void 0 ? void 0 : error.includes("<a")) ? /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_shared_LinkErrorMessage__WEBPACK_IMPORTED_MODULE_2__/* .LinkErrorMessage */ .B, { 634 error: error 635 }) : /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 636 className: "error__link", 637 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Components_ui_Link_Link__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, { 638 href: "#CustomerLogin-form", 639 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", { 640 className: "error__message", 641 children: error 642 }) 643 }) 644 }) 645 }, index)) 646 }) 647 ] 648 }) : null; 649}; 650 651 652/***/ }), 653 654/***/ 189058: 655/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 656 657"use strict"; 658/* harmony export */ __webpack_require__.d(__webpack_exports__, { 659/* harmony export */ A8: function() { return /* binding */ resendVerificationEmail; }, 660/* harmony export */ Sk: function() { return /* binding */ submitFormActionLogin; }, 661/* harmony export */ o1: function() { return /* binding */ submitFormActionSignup; }, 662/* harmony export */ xB: function() { return /* binding */ submitFormActionResetAccountPassword; }, 663/* harmony export */ yL: function() { return /* binding */ submitFormActionForgotPassword; } 664/* harmony export */ }); 665/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_types_SnackBar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(597707); 666/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_utils_Logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(101914); 667/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_utils_Logger__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wildfork_commercetools_core_ui_dist_src_lib_utils_Logger__WEBPACK_IMPORTED_MODULE_1__); 668/* harmony import */ var js_cookie__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(131955); 669/* harmony import */ var _Api_withAsync__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(715904); 670/* harmony import */ var _Constants_snackbar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(380254); 671/* harmony import */ var _Lib_store_SnackBarSlice__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(529840); 672/* harmony import */ var _Lib_tracking_trackingEvents__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(538933); 673/* harmony import */ var _Utils_snackbarHandlers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(921134); 674/* harmony import */ var _wff_api_constants_error__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(635768); 675/* harmony import */ var _wff_api_customerApi__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(164535); 676 677 678 679 680 681 682 683 684 685 686/** 687 * Shared handler for "Resend verification email": calls API; 688 * shows error in form on failure. Success is surfaced in the verify-email modal. 689 */ const resendVerificationEmail = async (param)=>{ 690 let { setError } = param; 691 setError(undefined); 692 const { error } = await (0,_Api_withAsync__WEBPACK_IMPORTED_MODULE_9__/* .withAsync */ .j)(()=>(0,_wff_api_customerApi__WEBPACK_IMPORTED_MODULE_8__/* .sendEmailVerificationToken */ .AU)()); 693 if (error) { 694 setError(error); 695 return { 696 ok: false 697 }; 698 } 699 return { 700 ok: true 701 }; 702}; 703const submitFormActionSignup = async (param)=>{ 704 let { dispatch, payload, setFormError, errorCodeTranslation, actionOnFormSuccess } = param; 705 const newPayload = { 706 ...payload 707 }; 708 // NOTE: Make sure that we are Passing ONLY the values that are needed 709 delete newPayload.confirmedPassword; 710 const { error } = await (0,_Api_withAsync__WEBPACK_IMPORTED_MODULE_9__/* .withAsync */ .j)(()=>{ 711 return (0,_wff_api_customerApi__WEBPACK_IMPORTED_MODULE_8__/* .submitSignupForm */ .bb)(newPayload); 712 }); 713 if (error) { 714 setFormError(error); 715 let scenarios = []; 716 if (errorCodeTranslation) { 717 scenarios = (0,_Utils_snackbarHandlers__WEBPACK_IMPORTED_MODULE_6__/* .getScenariosFromErrorCodeTranslation */ .Jq)({ 718 errorCodeTranslation 719 }); 720 } 721 (0,_Utils_snackbarHandlers__WEBPACK_IMPORTED_MODULE_6__/* .axiosErrorHandler */ .ri)({ 722 error, 723 dispatch, 724 scenarios, 725 fallbackSnackbar: { 726 heading: _Constants_snackbar__WEBPACK_IMPORTED_MODULE_3__/* .GENERIC_EVENT_ERR_HEADING */ .U3.REQUEST_FAILED(), 727 message: _Constants_snackbar__WEBPACK_IMPORTED_MODULE_3__/* .GENERIC_ERR_MSG */ .I_.ERROR() 728 }, 729 errorCodeIgnoreList: [ 730 _wff_api_constants_error__WEBPACK_IMPORTED_MODULE_7__/* .ER
730ROR_CODES */ .O.WF_CUSTOMER_001, 731 _wff_api_constants_error__WEBPACK_IMPORTED_MODULE_7__/* .ERROR_CODES */ .O.WF_CUSTOMER_031, 732 _wff_api_constants_error__WEBPACK_IMPORTED_MODULE_7__/* .ERROR_CODES */ .O.WF_CUSTOMER_032 733 ] 734 }); 735 return { 736 error 737 }; 738 } else { 739 // Track Event Account Signup 740 (0,_Lib_tracking_trackingEvents__WEBPACK_IMPORTED_MODULE_5__/* .signupEvent */ .HX)(payload.email); 741 actionOnFormSuccess(); 742 } 743}; 744const submitFormActionLogin = async (param)=>{ 745 let { dispatch, payload, setFormError, errorCodeTranslation, actionOnFormSuccess } = param; 746 const newPayload = { 747 ...payload 748 }; 749 // NOTE: Make sure that we are Passing ONLY the values that are needed 750 const { error } = await (0,_Api_withAsync__WEBPACK_IMPORTED_MODULE_9__/* .withAsync */ .j)(()=>(0,_wff_api_customerApi__WEBPACK_IMPORTED_MODULE_8__/* .submitLoginForm */ .Xo)(newPayload)); 751 if (error) { 752 setFormError(error); 753 let scenarios = []; 754 if (errorCodeTranslation) { 755 scenarios = (0,_Utils_snackbarHandlers__WEBPACK_IMPORTED_MODULE_6__/* .getScenariosFromErrorCodeTranslation */ .Jq)({ 756 errorCodeTranslation 757 }); 758 } 759 (0,_Utils_snackbarHandlers__WEBPACK_IMPORTED_MODULE_6__/* .axiosErrorHandler */ .ri)({ 760 error, 761 dispatch, 762 scenarios, 763 fallbackSnackbar: { 764 heading: _Constants_snackbar__WEBPACK_IMPORTED_MODULE_3__/* .GENERIC_EVENT_ERR_HEADING */ .U3.REQUEST_FAILED(), 765 message: _Constants_snackbar__WEBPACK_IMPORTED_MODULE_3__/* .GENERIC_ERR_MSG */ .I_.ERROR() 766 }, 767 errorCodeIgnoreList: [ 768 _wff_api_constants_error__WEBPACK_IMPORTED_MODULE_7__/* .ERROR_CODES */ .O.WF_CUSTOMER_004 769 ] 770 }); 771 } else { 772 // Track Login Event 773 (0,_Lib_tracking_trackingEvents__WEBPACK_IMPORTED_MODULE_5__/* .loginEvent */ .F2)(payload.email); 774 actionOnFormSuccess(); 775 } 776}; 777const submitFormActionForgotPassword = async (param)=>{ 778 let { dispatch, payload, setFormError, errorCodeTranslation, languageCode, contentTranslation = { 779 success: "An email has been sent to reset your password", 780 error: "Something went wrong. Please try again later." 781 }, handleSubmitComplete, path } = param; 782 const signupPayload = { 783 ...payload 784 }; 785 // NOTE: Make sure that we are Passing ONLY the values that are needed 786 const { error } = await (0,_Api_withAsync__WEBPACK_IMPORTED_MODULE_9__/* .withAsync */ .j)(()=>{ 787 return (0,_wff_api_customerApi__WEBPACK_IMPORTED_MODULE_8__/* .submitForgotPasswordForm */ .qZ)(signupPayload); 788 }); 789 if (error) { 790 setFormError(error); 791 let scenarios = []; 792 if (errorCodeTranslation) { 793 scenarios = (0,_Utils_snackbarHandlers__WEBPACK_IMPORTED_MODULE_6__/* .getScenariosFromErrorCodeTranslation */ .Jq)({ 794 errorCodeTranslation 795 }); 796 } 797 (0,_Utils_snackbarHandlers__WEBPACK_IMPORTED_MODULE_6__/* .axiosErrorHandler */ .ri)({ 798 error, 799 dispatch, 800 scenarios, 801 fallbackSnackbar: { 802 heading: _Constants_snackbar__WEBPACK_IMPORTED_MODULE_3__/* .GENERIC_EVENT_ERR_HEADING */ .U3.REQUEST_FAILED(), 803 message: contentTranslation.error 804 } 805 }); 806 } else { 807 dispatch((0,_Lib_store_SnackBarSlice__WEBPACK_IMPORTED_MODULE_4__/* .triggerSnackBar */ .qw)({ 808 title: _Constants_snackbar__WEBPACK_IMPORTED_MODULE_3__/* .GENERIC_EVENT_SUCCESS_HEADING */ .BW.SUCCESS(languageCode), 809 message: contentTranslation.success, 810 type: "success", 811 variant: "filled" 812 })); 813 js_cookie__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z.set("redirect_path_after_password_reset", JSON.stringify({ 814 redirectPath: path, 815 resetStatus: false 816 })); 817 } 818 handleSubmitComplete === null || handleSubmitComplete === void 0 ? void 0 : handleSubmitComplete(); 819}; 820const submitFormActionResetAccountPassword = async (param)=>{ 821 let { dispatch, payload, setFormError, errorCodeTranslation, actionOnFormSuccess, contentTranslation = { 822 error: "There was an error submitting your request" 823 } } = param; 824 if (!payload.token) { 825 _wildfork_commercetools_core_ui_dist_src_lib_utils_Logger__WEBPACK_IMPORTED_MODULE_1___default().error("There was no Password Token ID Provided to include in the password reset payload"); 826 } 827 const newPayload = { 828 ...payload 829 }; 830 // NOTE: Make sure that we are Passing ONLY the formState values that are needed 831 delete newPayload.confirmedPassword; 832 const { error } = await (0,_Api_withAsync__WEBPACK_IMPORTED_MODULE_9__/* .withAsync */ .j)(()=>{ 833 return (0,_wff_api_customerApi__WEBPACK_IMPORTED_MODULE_8__/* .submitAccountResetForm */ .QX)(newPayload); 834 }); 835 if (error) { 836 var _error_errors, _error_errors_, _error_errors1; 837 setFormError(error); 838 if (!(error === null || error === void 0 ? void 0 : (_error_errors = error.errors) === null || _error_errors === void 0 ? void 0 : _error_errors.length) && (error === null || error === void 0 ? void 0 : (_error_errors1 = error.errors) === null || _error_errors1 === void 0 ? void 0 : (_error_errors_ = _error_errors1[0]) === null || _error_errors_ === void 0 ? void 0 : _error_errors_.code)) { 839 var _error_errors_1; 840 dispatch((0,_Lib_store_SnackBarSlice__WEBPACK_IMPORTED_MODULE_4__/* .triggerSnackBar */ .qw)({ 841 message: (_error_errors_1 = error === null || error === void 0 ? void 0 : error.errors[0]) !== null && _error_errors_1 !== void 0 ? _error_errors_1 : contentTranslation.error, 842 title: _Constants_snackbar__WEBPACK_IMPORTED_MODULE_3__/* .GENERIC_EVENT_ERR_HEADING */ .U3.REQUEST_FAILED(), 843 type: _wildfork_commercetools_core_ui_dist_src_lib_types_SnackBar__WEBPACK_IMPORTED_MODULE_0__.SnackBarType.ER
843ROR, 844 variant: _wildfork_commercetools_core_ui_dist_src_lib_types_SnackBar__WEBPACK_IMPORTED_MODULE_0__.SnackBarVariant.FILLED 845 })); 846 return; 847 } 848 let scenarios = []; 849 if (errorCodeTranslation) { 850 scenarios = (0,_Utils_snackbarHandlers__WEBPACK_IMPORTED_MODULE_6__/* .getScenariosFromErrorCodeTranslation */ .Jq)({ 851 errorCodeTranslation 852 }); 853 } 854 (0,_Utils_snackbarHandlers__WEBPACK_IMPORTED_MODULE_6__/* .axiosErrorHandler */ .ri)({ 855 error, 856 dispatch, 857 scenarios, 858 fallbackSnackbar: { 859 heading: _Constants_snackbar__WEBPACK_IMPORTED_MODULE_3__/* .GENERIC_EVENT_ERR_HEADING */ .U3.REQUEST_FAILED(), 860 message: contentTranslation.error 861 } 862 }); 863 } else { 864 actionOnFormSuccess(); 865 } 866}; 867 868 869/***/ }), 870 871/***/ 534696: 872/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 873 874"use strict"; 875/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(785893); 876/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(667294); 877/* harmony import */ var _mui_material_Grid__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(448263); 878/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_components_templates_FormContainer_formElements_Form__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(468118); 879/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_components_templates_FormContainer_formElements_FormInputWrapper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(860349); 880/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_components_templates_FormContainer_formElements_FormInputWrapper__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wildfork_commercetools_core_ui_dist_src_components_templates_FormContainer_formElements_FormInputWrapper__WEBPACK_IMPORTED_MODULE_3__); 881/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_components_templates_FormContainer_formElements_Input__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(429581); 882/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_components_templates_FormContainer_formElements_Input__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wildfork_commercetools_core_ui_dist_src_components_templates_FormContainer_formElements_Input__WEBPACK_IMPORTED_MODULE_4__); 883/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_components_ui_message_components__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(737827); 884/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_components_ui_message_components__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wildfork_commercetools_core_ui_dist_src_components_ui_message_components__WEBPACK_IMPORTED_MODULE_5__); 885/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_components_ui_message_Message__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(626135); 886/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_components_ui_message_Message__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_wildfork_commercetools_core_ui_dist_src_components_ui_message_Message__WEBPACK_IMPORTED_MODULE_6__); 887/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_hooks_corporate_gift_useRecipientData__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(173273); 888/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_utils_classNames__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(221504); 889/* harmony import */ var js_cookie__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(131955); 890/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(811163); 891/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(next_router__WEBPACK_IMPORTED_MODULE_10__); 892/* harmony import */ var _Api_customerApi__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(164535); 893/* harmony import */ var _Api_withAsync__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(715904); 894/* harmony import */ var _Components_providers_context_checkout_CheckoutProvider__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(98385); 895/* harmony import */ var _Components_ui__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(836455); 896/* harmony import */ var _Lib_hooks_useActionBasedOnStorage__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(170077); 897/* harmony import */ var _Lib_hooks_useCustomer__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(643525); 898/* harmony import */ var _Lib_hooks_useWrongCredentialsMaxAttempts__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(53306); 899/* harmony import */ var _Lib_store_cartSlice__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(484725); 900/* harmony import */ var _Lib_store_hooks__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(267097); 901/* harmony import */ var _Lib_tracking_trackingEvents__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(538933); 902/* harmony import */ var _Lib_types_tracking__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(637938); 903/* harmony import */ var _Lib_utils_formUtils__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(574166); 904/* harmony import */ var _Lib_utils_locale__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(225220); 905/* harmony import */ var _LoginForm_module_scss__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(809525); 906/* harmony import */ var _LoginForm_module_scss__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(_LoginForm_module_scss__WEBPACK_IMPORTED_MODULE_26__); 907/* harmony import */ var _helpers_commonFormSubmission__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(189058); 908/* harmony import */ var _shared_LinkErrorMessage__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(424802); 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937const forgotPasswordInitialState = { 938 loading: false, 939 sent: false 940}; 941const LoginForm = (param)=>{ 942 let { onClickForgotPassword, isCheckout = false, isOldCheckoutFlow = false } = param; 943 const dispatch = (0,_Lib_store_hooks__WEBPACK_IMPORTED_MODULE_18__/* .useAppDispatch */ .T)(); 944 const { push, asPath } = (0,next_router__WEBPACK_IMPORTED_MODULE_10__.useRouter)(); 945 const { getCustomerDetails } = (0,_Lib_hooks_useCustomer__WEBPACK_IMPORTED_MODULE_15__/* .useCustomer */ .O)(); 946 const cartSlice = (0,_Lib_store_hooks__WEBPACK_IMPORTED_MODULE_18__/* .useAppSelector */ .C)(_Lib_store_cartSlice__WEBPACK_IMPORTED_MODULE_17__/* .cartSliceSelector */ .Ew); 947 const [showMaxAttemptsExceeded, setShowMaxAttemptsExceeded] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false); 948 const [forgotPasswordEmailSent, setForgotPasswordEmailSent] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({ 949 ...forgotPasswordInitialState 950 }); 951 const [showSuccessMessageAfterReset, setShowSuccessMessageAfterReset] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false); 952 const { recipientData } = (0,_wildfork_commercetools_core_ui_dist_src_hooks_corporate_gift_useRecipientData__WEBPACK_IMPORTED_MODULE_7__.useRecipientData)(); 953 const credentialsErrorMessage = (0,_Lib_utils_locale__WEBPACK_IMPORTED_MODULE_22__.t)("customer.form_errors.invalid_login_credentials"); 954 const resetPasswordRequiredErrorMessage = (0,_Lib_utils_locale__WEBPACK_IMPORTED_MODULE_22__.t)("customer.form_errors.reset_password_required"); 955 const errorCodeTranslation = { 956 WF_CUSTOMER_004: credentialsErrorMessage 957 }; 958 const [axiosError, setFormError] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(); 959 const loginFormErrorMessages = { 960 resetPasswordRequired: resetPasswordRequiredErrorMessage, 961 invalidCredentials: credentialsErrorMessage, 962 defaultMessage: (0,_Lib_utils_locale__WEBPACK_IMPORTED_MODULE_22__.t)("customer.form_errors.something_went_wrong") 963 }; 964 const formError = (0,_Lib_utils_formUtils__WEBPACK_IMPORTED_MODULE_21__/* .getLoginFormErrorMessage */ .fZ)(axiosError, loginFormErrorMessages); 965 const handleOnClickSubmit = (values)=>{ 966 setForgotPasswordEmailSent({ 967 loading: false, 968 sent: false 969 }); 970 setFormError(undefined); 971 (0,_helpers_commonFormSubmission__WEBPACK_IMPORTED_MODULE_23__/* .submitFormActionLogin */ .Sk)({ 972 dispatch, 973 payload: values, 974 setFormError, 975 errorCodeTranslation, 976 actionOnFormSuccess: async ()=>{ 977 js_cookie__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .Z.remove("redirect_path_after_password_reset"); 978 (0,_Lib_hooks_useActionBasedOnStorage__WEBPACK_IMPORTED_MODULE_14__/* .dispatchCartFromCookie */ .ko)({ 979 dispatch 980 }); 981 const { response } = await getCustomerDetails(); 982 (0,_Lib_tracking_trackingEvents__WEBPACK_IMPORTED_MODULE_19__/* .GTMSetUserId */ .IH)({ 983 customerInfo: response === null || response === void 0 ? void 0 : response.data 984 }); 985 (0,_Lib_tracking_trackingEvents__WEBPACK_IMPORTED_MODULE_19__/* .GTMCheckoutAccountType */ .Jj)(_Lib_types_tracking__WEBPACK_IMPORTED_MODULE_20__/* .CheckoutAccountType */ .O.LOGIN); 986 (0,_Lib_tracking_trackingEvents__WEBPACK_IMPORTED_MODULE_19__/* .emarsysProceedToCheckout */ .xt)(cartSlice.lineItems, values === null || values === void 0 ? void 0 : values.email); 987 if (isOldCheckoutFlow) push("/checkout?step=".concat(_Components_providers_context_checkout_CheckoutProvider__WEBPACK_IMPORTED_MODULE_12__/* .CheckoutSteps */ .bN.delivery)); 988 } 989 }); 990 }; 991 const onMaxAttemptsExceeded = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{ 992 setShowMaxAttemptsExceeded(true); 993 }, []); 994 (0,_Lib_hooks_useWrongCredentialsMaxAttempts__WEBPACK_IMPORTED_MODULE_16__/* .useWrongCredentialsMaxAttempts */ .f)({ 995 axiosError, 996 onMaxAttemptsExceeded 997 }); 998 const triggerForgotPasswordEmail = async (email)=>{ 999 setForgotPasswordEmailSent({ 1000 loading: true, 1001 sent: false 1002 }); 1003 await (0,_Api_withAsync__WEBPACK_IMPORTED_MODULE_25__/* .withAsync */ .j)(()=>{ 1004 return (0,_Api_customerApi__WEBPACK_IMPORTED_MODULE_11__/* .submitForgotPasswordForm */ .qZ)({ 1005 email 1006 }); 1007 }); 1008 setShowMaxAttemptsExceeded(false); 1009 setFormError(undefined); 1010 setForgotPasswordEmailSent({ 1011 loading: false, 1012 sent: true 1013 }); 1014 js_cookie__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .Z.set("redirect_path_after_password_reset", JSON.stringify({ 1015 redirectPath: asPath, 1016 resetStatus: false 1017 })); 1018 }; 1019 (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{ 1020 var _JSON_parse; 1021 const redirectCookie = js_cookie__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .Z.get("redirect_path_after_password_reset"); 1022 const resetStatus = redirectCookie ? (_JSON_parse = JSON.parse(redirectCookie)) === null || _JSON_parse === void 0 ? void 0 : _JSON_parse.resetStatus : false;
1023 setShowSuccessMessageAfterReset(resetStatus); 1024 if (resetStatus) { 1025 setTimeout(()=>{ 1026 setShowSuccessMessageAfterReset(false); 1027 js_cookie__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .Z.remove("redirect_path_after_password_reset"); 1028 }, 60000); 1029 } 1030 }, []); 1031 const formErrorFormatted = !!axiosError ? (formError === null || formError === void 0 ? void 0 : formError.includes("<a")) ? /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_shared_LinkErrorMessage__WEBPACK_IMPORTED_MODULE_24__/* .LinkErrorMessage */ .B, { 1032 error: formError 1033 }) : formError : null; 1034 // Set initial values based on recipientData when available 1035 const initialValues = { 1036 email: (recipientData === null || recipientData === void 0 ? void 0 : recipientData.email) || "" 1037 }; 1038 return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_wildfork_commercetools_core_ui_dist_src_components_templates_FormContainer_formElements_Form__WEBPACK_IMPORTED_MODULE_2__/* .Form */ .l, { 1039 initialValues: initialValues, 1040 onSubmit: handleOnClickSubmit, 1041 testID: "login_form", 1042 render: (param)=>{ 1043 let { handleSubmit, values } = param; 1044 return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 1045 className: "form-container", 1046 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("form", { 1047 className: "form form--customer-login", 1048 "aria-label": "checkout login form", 1049 children: [ 1050 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", { 1051 className: (_LoginForm_module_scss__WEBPACK_IMPORTED_MODULE_26___default().form__messages), 1052 children: [ 1053 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_wildfork_commercetools_core_ui_dist_src_components_ui_message_Message__WEBPACK_IMPORTED_MODULE_6__.Message, { 1054 show: forgotPasswordEmailSent.sent, 1055 variant: "success", 1056 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_wildfork_commercetools_core_ui_dist_src_components_ui_message_components__WEBPACK_IMPORTED_MODULE_5__.MessageContent, { 1057 children: [ 1058 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_wildfork_commercetools_core_ui_dist_src_components_ui_message_components__WEBPACK_IMPORTED_MODULE_5__.MessageHeading, { 1059 children: [ 1060 "If an account for ", 1061 values === null || values === void 0 ? void 0 : values.email, 1062 " exists, we will send you an email with a link to reset your password." 1063 ] 1064 }), 1065 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_wildfork_commercetools_core_ui_dist_src_components_ui_message_components__WEBPACK_IMPORTED_MODULE_5__.MessageBody, { 1066 children: "Please follow the instructions in the email. Be sure to check your spam or junk email." 1067 }) 1068 ] 1069 }) 1070 }), 1071 showMaxAttemptsExceeded && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 1072 onClick: ()=>triggerForgotPasswordEmail(values === null || values === void 0 ? void 0 : values.email), 1073 className: (0,_wildfork_commercetools_core_ui_dist_src_lib_utils_classNames__WEBPACK_IMPORTED_MODULE_8__["default"])((_LoginForm_module_scss__WEBPACK_IMPORTED_MODULE_26___default()["update-password-notification"]), forgotPasswordEmailSent.loading && (_LoginForm_module_scss__WEBPACK_IMPORTED_MODULE_26___default()["update-password-notification--loading"])), 1074 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_wildfork_commercetools_core_ui_dist_src_components_ui_message_Message__WEBPACK_IMPORTED_MODULE_6__.Message, { 1075 show: true, 1076 variant: "dark", 1077 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_wildfork_commercetools_core_ui_dist_src_components_ui_message_components__WEBPACK_IMPORTED_MODULE_5__.MessageContent, { 1078 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_wildfork_commercetools_core_ui_dist_src_components_ui_message_components__WEBPACK_IMPORTED_MODULE_5__.MessageHeading, { 1079 children: [ 1080 "Weâve recently updated our website and require all users to ", 1081 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("u", { 1082 children: "update their password" 1083 }), 1084 ". If you have not done so already, please do." 1085 ] 1086 }) 1087 }) 1088 }) 1089 }), 1090 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_wildfork_commercetools_core_ui_dist_src_components_ui_message_Message__WEBPACK_IMPORTED_MODULE_6__.Message, { 1091 show: !!axiosError, 1092 variant: "error", 1093 children: [ 1094 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_wildfork_commercetools_core_ui_dist_src_components_ui_message_components__WEBPACK_IMPORTED_MODULE_5__.MessageIcon, {}), 1095 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_wildfork_commercetools_core_ui_dist_src_components_ui_message_components__WEBPACK_IMPORTED_MODULE_5__.MessageContent, { 1096 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_wildfork_commercetools_core_ui_dist_src_components_ui_message_components__WEBPACK_IMPORTED_MODULE_5__.MessageHeading, { 1097 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", { 1098 className: (_LoginForm_module_scss__WEBPACK_IMPORTED_MODULE_26___default().form__error_container), 1099 children: formErrorFormatted 1100 }) 1101 }) 1102 }) 1103 ] 1104 }), 1105 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_wildfork_commercetools_core_ui_dist_src_components_ui_message_Message__WEBPACK_IMPORTED_MODULE_6__.Message, { 1106 show: showSuccessMessageAfterReset && !axiosError, 1107 variant: "success-fill", 1108 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_wildfork_commercetools_core_ui_dist_src_components_ui_message_components__WEBPACK_IMPORTED_MODULE_5__.MessageContent, { 1109 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_wildfork_commercetools_core_ui_dist_src_components_ui_message_components__WEBPACK_IMPORTED_MODULE_5__.MessageHeading, { 1110 children: [ 1111 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 1112 className: (_LoginForm_module_scss__WEBPACK_IMPORTED_MODULE_26___default().form__messages__heading1), 1113 children: "Thank you for resetting your password!" 1114 }), 1115 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 1116 className: (_LoginForm_module_scss__WEBPACK_IMPORTED_MODULE_26___default().form__messages__heading2), 1117 children: "You can now login to place your order." 1118 }) 1119 ] 1120 }) 1121 }) 1122 }) 1123 ] 1124 }), 1125 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_mui_material_Grid__WEBPACK_IMPORTED_MODULE_27__/* ["default"] */ .ZP, { 1126 container: true, 1127 spacing: 2, 1128 marginBottom: 2, 1129 children: [ 1130 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material_Grid__WEBPACK_IMPORTED_MODULE_27__/* ["default"] */ .ZP, { 1131 item: true, 1132 xs: 12, 1133 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_wildfork_commercetools_core_ui_dist_src_components_templates_FormContainer_formElements_Input__WEBPACK_IMPORTED_MODULE_4__.Input, { 1134 label: "Email", 1135 name: "email", 1136 required: true, 1137 placeholder: (0,_Lib_utils_locale__WEBPACK_IMPORTED_MODULE_22__.t)("customer.login.place_holders.email"), 1138 validations: [ 1139 _wildfork_commercetools_core_ui_dist_src_components_templates_FormContainer_formElements_FormInputWrapper__WEBPACK_IMPORTED_MODULE_3__.FormValidations.Required, 1140 _wildfork_commercetools_core_ui_dist_src_components_templates_FormContainer_formElements_FormInputWrapper__WEBPACK_IMPORTED_MODULE_3__.FormValidations.Email 1141 ], 1142 trim: true 1143 }) 1144 }), 1145 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material_Grid__WEBPACK_IMPORTED_MODULE_27__/* ["default"] */ .ZP, { 1146 item: true, 1147 xs: 12, 1148 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_wildfork_commercetools_core_ui_dist_src_components_templates_FormContainer_formElements_Input__WEBPACK_IMPORTED_MODULE_4__.Input, { 1149 label: "Password", 1150 name: "password", 1151 type: "password", 1152 required: true, 1153 placeholder: (0,_Lib_utils_locale__WEBPACK_IMPORTED_MODULE_22__.t)("customer.login.place_holders.password"), 1154 validations: [ 1155 _wildfork_commercetools_core_ui_dist_src_components_templates_FormContainer_formElements_FormInputWrapper__WEBPACK_IMPORTED_MODULE_3__.FormValidations.Required 1156 ], 1157 withPreview: true 1158 }) 1159 }) 1160 ] 1161 }), 1162 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 1163 className: (0,_wildfork_commercetools_core_ui_dist_src_lib_utils_classNames__WEBPACK_IMPORTED_MODULE_8__["default"])("form__link form__link--forgot-password", (_LoginForm_module_scss__WEBPACK_IMPORTED_MODULE_26___default()["forgot-password"])), 1164 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", { 1165 "data-testid": "forgot_password", 1166 href: "javascript:void(0);", 1167 onClick: ()=>onClickForgotPassword(false), 1168 children: (0,_Lib_utils_locale__WEBPACK_IMPORTED_MODULE_22__.t)("customer.login.forgot_password") 1169 }) 1170 }), 1171 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 1172 className: "form__actions", 1173 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Components_ui__WEBPACK_IMPORTED_MODULE_13__/* .Button */ .zx, {
1174 "data-testid": "form_field-button_submit", 1175 className: (0,_wildfork_commercetools_core_ui_dist_src_lib_utils_classNames__WEBPACK_IMPORTED_MODULE_8__["default"])("action", (_LoginForm_module_scss__WEBPACK_IMPORTED_MODULE_26___default()["submit-button"])), 1176 onClick: handleSubmit, 1177 type: "submit", 1178 children: isCheckout ? (0,_Lib_utils_locale__WEBPACK_IMPORTED_MODULE_22__.t)("checkout.auth.login.form.submit") : (0,_Lib_utils_locale__WEBPACK_IMPORTED_MODULE_22__.t)("customer.login.sign_in") 1179 }) 1180 }) 1181 ] 1182 }) 1183 }); 1184 } 1185 }); 1186}; 1187/* harmony default export */ __webpack_exports__.Z = (LoginForm); 1188 1189 1190/***/ }), 1191 1192/***/ 375409: 1193/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1194 1195"use strict"; 1196/* unused harmony export NewsletterSubtext */ 1197/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(785893); 1198/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(667294); 1199/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_components_templates_FormContainer_forms_SignUpForm__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(458458); 1200/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_components_templates_FormContainer_forms_SignUpForm__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wildfork_commercetools_core_ui_dist_src_components_templates_FormContainer_forms_SignUpForm__WEBPACK_IMPORTED_MODULE_2__); 1201/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(305208); 1202/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_utils__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wildfork_commercetools_core_ui_dist_src_lib_utils__WEBPACK_IMPORTED_MODULE_3__); 1203/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(811163); 1204/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(next_router__WEBPACK_IMPORTED_MODULE_4__); 1205/* harmony import */ var next_i18next__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(900710); 1206/* harmony import */ var _Components_forms_helpers_commonFormSubmission__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(189058); 1207/* harmony import */ var _Components_providers_context_checkout_CheckoutProvider__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(98385); 1208/* harmony import */ var _Lib_hooks_useCustomer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(643525); 1209/* harmony import */ var _Lib_store_cartSlice__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(484725); 1210/* harmony import */ var _Lib_store_hooks__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(267097); 1211/* harmony import */ var _Lib_tracking_trackingEvents__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(538933); 1212/* harmony import */ var _Lib_types_tracking__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(637938); 1213/* harmony import */ var _Lib_utils_locale__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(225220); 1214/* harmony import */ var _shared_LinkErrorMessage__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(424802); 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230const NewsletterSubtext = (param)=>{ 1231 let { languageCode } = param; 1232 if (languageCode === "en-CA") { 1233 return /*#__PURE__*/ _jsx("p", { 1234 children: /*#__PURE__*/ _jsxs(Trans, { 1235 t: t, 1236 i18nKey: "customer.register.newsletter_subtext", 1237 children: [ 1238 "All communications are subject to ", 1239 /*#__PURE__*/ _jsx("u", { 1240 children: "Terms of Use" 1241 }), 1242 ",", 1243 " ", 1244 /*#__PURE__*/ _jsx("u", { 1245 children: "Return Policy" 1246 }), 1247 ", ", 1248 /*#__PURE__*/ _jsx("u", { 1249 children: "Privacy Policy" 1250 }) 1251 ] 1252 }) 1253 }); 1254 } else { 1255 return /*#__PURE__*/ _jsx("p", { 1256 children: t("customer.register.newsletter_subtext") 1257 }); 1258 } 1259}; 1260const RegisterForm = (noRedirect, isModal)=>{ 1261 const { push } = (0,next_router__WEBPACK_IMPORTED_MODULE_4__.useRouter)(); 1262 const dispatch = (0,_Lib_store_hooks__WEBPACK_IMPORTED_MODULE_10__/* .useAppDispatch */ .T)(); 1263 const cartSlice = (0,_Lib_store_hooks__WEBPACK_IMPORTED_MODULE_10__/* .useAppSelector */ .C)(_Lib_store_cartSlice__WEBPACK_IMPORTED_MODULE_9__/* .cartSliceSelector */ .Ew); 1264 const { getCustomerDetails } = (0,_Lib_hooks_useCustomer__WEBPACK_IMPORTED_MODULE_8__/* .useCustomer */ .O)(); 1265 const [axiosError, setAxiosError] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(undefined); 1266 const errorCodeTranslation = { 1267 WF_CUSTOMER_001: isModal ? (0,_Lib_utils_locale__WEBPACK_IMPORTED_MODULE_13__.t)("customer.form_errors.existing_account") // Avoid embedding html on the message and redirecting from modal. 1268 : (0,_Lib_utils_locale__WEBPACK_IMPORTED_MODULE_13__.t)("customer.form_errors.existing_account_html"), 1269 WF_CUSTOMER_002: (0,_Lib_utils_locale__WEBPACK_IMPORTED_MODULE_13__.t)("customer.form_errors.blank_email"), 1270 WF_CUSTOMER_003: (0,_Lib_utils_locale__WEBPACK_IMPORTED_MODULE_13__.t)("customer.form_errors.blank_password"), 1271 WF_CUSTOMER_005: (0,_Lib_utils_locale__WEBPACK_IMPORTED_MODULE_13__.t)("customer.form_errors.blank_field") 1272 }; 1273 const formErrorCode = _wildfork_commercetools_core_ui_dist_src_lib_utils__WEBPACK_IMPORTED_MODULE_3__.AxiosErrorUtils.getErrorCode(axiosError); 1274 const formError = (errorCodeTranslation === null || errorCodeTranslation === void 0 ? void 0 : errorCodeTranslation[formErrorCode]) || (0,_Lib_utils_locale__WEBPACK_IMPORTED_MODULE_13__.t)("customer.form_errors.something_went_wrong"); 1275 const actionOnFormSuccess = async ()=>{ 1276 const { response } = await getCustomerDetails(); 1277 const customerInfo = response === null || response === void 0 ? void 0 : response.data; 1278 (0,_Lib_tracking_trackingEvents__WEBPACK_IMPORTED_MODULE_11__/* .GTMSetUserId */ .IH)({ 1279 customerInfo: response === null || response === void 0 ? void 0 : response.data 1280 }); 1281 if (!noRedirect) { 1282 (0,_Lib_tracking_trackingEvents__WEBPACK_IMPORTED_MODULE_11__/* .GTMCheckoutAccountType */ .Jj)(_Lib_types_tracking__WEBPACK_IMPORTED_MODULE_12__/* .CheckoutAccountType */ .O.SIGNUP); 1283 (0,_Lib_tracking_trackingEvents__WEBPACK_IMPORTED_MODULE_11__/* .emarsysProceedToCheckout */ .xt)(cartSlice.lineItems, customerInfo === null || customerInfo === void 0 ? void 0 : customerInfo.email); 1284 push("/checkout?step=".concat(_Components_providers_context_checkout_CheckoutProvider__WEBPACK_IMPORTED_MODULE_7__/* .CheckoutSteps */ .bN.delivery)); 1285 } 1286 }; 1287 const onSubmit = async (values)=>{ 1288 setAxiosError(undefined); 1289 const payload = { 1290 ...values 1291 }; 1292 if (payload === null || payload === void 0 ? void 0 : payload.confirm) delete payload.confirm; 1293 (0,_Components_forms_helpers_commonFormSubmission__WEBPACK_IMPORTED_MODULE_6__/* .submitFormActionSignup */ .o1)({ 1294 dispatch, 1295 payload, 1296 setFormError: setAxiosError, 1297 errorCodeTranslation, 1298 actionOnFormSuccess 1299 }); 1300 }; 1301 const formErrorFormatted = !!axiosError ? (formError === null || formError === void 0 ? void 0 : formError.includes("<a")) ? /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_shared_LinkErrorMessage__WEBPACK_IMPORTED_MODULE_14__/* .LinkErrorMessage */ .B, { 1302 error: formError 1303 }) : formError : null; 1304 return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 1305 className: "form-container", 1306 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_wildfork_commercetools_core_ui_dist_src_components_templates_FormContainer_forms_SignUpForm__WEBPACK_IMPORTED_MODULE_2__.SignUpForm, { 1307 onSubmit: onSubmit, 1308 formError: formErrorFormatted 1309 }) 1310 }); 1311}; 1312/* harmony default export */ __webpack_exports__.Z = (RegisterForm); 1313 1314 1315/***/ }), 1316 1317/***/ 424802: 1318/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1319 1320"use strict"; 1321/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1322/* harmony export */ B: function() { return /* binding */ LinkErrorMessage; } 1323/* harmony export */ }); 1324/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(785893); 1325/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(741664); 1326/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_1__); 1327 1328 1329const LinkErrorMessage = (param)=>{ 1330 let { error } = param; 1331 const getHref = (error)=>{ 1332 const href = error === null || error === void 0 ? void 0 : error.match(/href="([^"]*)/); 1333 return (href === null || href === void 0 ? void 0 : href[1]) || ""; 1334 }; 1335 const getTextBeforeLink = (error)=>{ 1336 const textBeforeLink = error === null || error === void 0 ? void 0 : error.match(/(.*)<a/); 1337 return (textBeforeLink === null || textBeforeLink === void 0 ? void 0 : textBeforeLink[1]) || ""; 1338 }; 1339 const getTextAfterLink = (error)=>{ 1340 const textAfterLink = error === null || error === void 0 ? void 0 : error.match(/a>(.*)/); 1341 return (textAfterLink === null || textAfterLink === void 0 ? void 0 : textAfterLink[1]) || ""; 1342 }; 1343 const getLinkText = (error)=>{ 1344 const linkText = error === null || error === void 0 ? void 0 : error.match(/>([^<]*)</); 1345 return (linkText === null || linkText === void 0 ? void 0 : linkText[1]) || ""; 1346 }; 1347 return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", { 1348 className: "error__message reset-link", 1349 children: [ 1350 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", { 1351 children: getTextBeforeLink(error) 1352 }), 1353 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), { 1354 href: getHref(error), 1355 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", { 1356 children: getLinkText(error) 1357 }) 1358 }), 1359 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", { 1360 children: getTextAfterLink(error) 1361 }) 1362 ] 1363 }); 1364}; 1365 1366 1367/***/ }), 1368 1369/***/ 500031: 1370/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1371 1372"use strict"; 1373 1374// EXPORTS 1375__webpack_require__.d(__webpack_exports__, { 1376 d: function() { return /* reexport */ useFastlaneInitializationOPC; }, 1377 a: function() { return /* reexport */ useOpcPayment; } 1378}); 1379 1380// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/components/one-page-checkout/index.js 1381var one_page_checkout = __webpack_require__(879161); 1382// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/lib/context/index.js 1383var context = __webpack_require__(93050); 1384// EXTERNAL MODULE: ./node_modules/next/router.js 1385var next_router = __webpack_require__(811163); 1386// EXTERNAL MODULE: ./src/components/one-page-checkout/constants/index.ts 1387var constants = __webpack_require__(701119); 1388// EXTERNAL MODULE: ./src/components/one-page-checkout/hooks/payment/paymentContants.ts 1389var paymentContants = __webpack_require__(754513); 1390// EXTERNAL MODULE: ./src/components/one-page-checkout/utils/createOnePageCheckoutHandlers.ts + 1 modules 1391var createOnePageCheckoutHandlers = __webpack_require__(707635); 1392// EXTERNAL MODULE: ./src/lib/store/customerInfoSlice.ts 1393var customerInfoSlice = __webpack_require__(680921); 1394// EXTERNAL MODULE: ./src/lib/store/hooks.ts 1395var hooks = __webpack_require__(267097); 1396// EXTERNAL MODULE: ./src/lib/store/onePageCheckoutPaymentSlice.ts 1397var onePageCheckoutPaymentSlice = __webpack_require__(412512); 1398// EXTERNAL MODULE: ./src/lib/store/zipcodeSlice.tsx 1399var zipcodeSlice = __webpack_require__(480326); 1400// EXTERNAL MODULE: ./src/components/one-page-checkout/hooks/useDeliveryWindowSession.ts 1401var useDeliveryWindowSession = __webpack_require__(833075); 1402;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/cardPayment/useSubmitCardOrder.ts 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414const useSubmitCardOrder = ()=>{ 1415 const { giftCard, paymentFormData } = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectOnePageCheckoutPaymentSelector */.n$); 1416 const { getDeliveryWindowSession, setDeliveryWindowSession }
1416 = (0,useDeliveryWindowSession/* useDeliveryWindowSession */.i)(); 1417 const { getValues } = (0,one_page_checkout/* useGetOpcFormValues */.BC)(); 1418 const { cartCheckInventory, submitBillingAddress, addShippingAddress, submitOrder, submitOrderGC, submitGiftOrderInformation, onOrderSubmitFailed } = (0,createOnePageCheckoutHandlers/* createOpcHandlers */.A2)({ 1419 getDeliveryWindowSession, 1420 setDeliveryWindowSession 1421 }); 1422 const { onlyMembershipItemInTheCart, cart } = (0,context.useCartContext)(); 1423 const storeDetails = (0,hooks/* useAppSelector */.C)(zipcodeSlice/* storeDetailsSelector */.W$); 1424 const { firstName, lastName } = (0,hooks/* useAppSelector */.C)(customerInfoSlice/* CustomerInfoSelector */.fP); 1425 const { push } = (0,next_router.useRouter)(); 1426 const getBillingAddressPayload = ()=>{ 1427 const useSameAsShipping = getValues("useSameAsShipping"); 1428 const shippingAddress = getValues("shippingAddress"); 1429 if (useSameAsShipping) { 1430 const { firstName, lastName, phone, address1, address2, city, state, postalCode, country } = shippingAddress; 1431 return { 1432 firstName, 1433 lastName, 1434 phone, 1435 address1, 1436 address2: address2 !== null && address2 !== void 0 ? address2 : "", 1437 city, 1438 state, 1439 postalCode, 1440 country 1441 }; 1442 } 1443 const billingAddress = getValues("billingAddress"); 1444 var _billingAddress_address2; 1445 return { 1446 ...billingAddress, 1447 address2: (_billingAddress_address2 = billingAddress.address2) !== null && _billingAddress_address2 !== void 0 ? _billingAddress_address2 : "" 1448 }; 1449 }; 1450 const getGiftOrderInformationPayload = ()=>{ 1451 const isGiftOrder = getValues("isGiftOrder"); 1452 const giftMessage = getValues("giftMessage"); 1453 return { 1454 isGiftOrder, 1455 giftMessage 1456 }; 1457 }; 1458 const updateShippingAddressWithStoreInfo = async ()=>{ 1459 try { 1460 var _storeDetails_stores_, _storeDetails_stores; 1461 const storeAddress = storeDetails === null || storeDetails === void 0 ? void 0 : (_storeDetails_stores = storeDetails.stores) === null || _storeDetails_stores === void 0 ? void 0 : (_storeDetails_stores_ = _storeDetails_stores[0]) === null || _storeDetails_stores_ === void 0 ? void 0 : _storeDetails_stores_.address; 1462 if (!storeAddress) { 1463 throw new Error("Store address is not available"); 1464 } 1465 var _storeAddress_address1, _storeAddress_address2, _storeAddress_city, _storeAddress_state, _storeAddress_postalCode, _storeAddress_phone, _storeAddress_country; 1466 // adds shipping address to satisfy BE Validation 1467 const addressInfo = { 1468 firstName: firstName, 1469 lastName: lastName, 1470 address1: (_storeAddress_address1 = storeAddress.address1) !== null && _storeAddress_address1 !== void 0 ? _storeAddress_address1 : "", 1471 address2: (_storeAddress_address2 = storeAddress.address2) !== null && _storeAddress_address2 !== void 0 ? _storeAddress_address2 : "", 1472 city: (_storeAddress_city = storeAddress.city) !== null && _storeAddress_city !== void 0 ? _storeAddress_city : "", 1473 state: (_storeAddress_state = storeAddress.state) !== null && _storeAddress_state !== void 0 ? _storeAddress_state : "", 1474 postalCode: (_storeAddress_postalCode = storeAddress.postalCode) !== null && _storeAddress_postalCode !== void 0 ? _storeAddress_postalCode : "", 1475 phone: (_storeAddress_phone = storeAddress.phone) !== null && _storeAddress_phone !== void 0 ? _storeAddress_phone : "", 1476 country: (_storeAddress_country = storeAddress.country) !== null && _storeAddress_country !== void 0 ? _storeAddress_country : "" 1477 }; 1478 await addShippingAddress({ 1479 data: addressInfo, 1480 defaultAddress: false 1481 }); 1482 } catch (error) { 1483 throw error; 1484 } 1485 }; 1486 const mandatoryChecksBeforeSubmitOrder = async function() { 1487 let callBillingAddress = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;
1488 if (onlyMembershipItemInTheCart) { 1489 await updateShippingAddressWithStoreInfo(); 1490 } else { 1491 const isDelivery = getValues("fulfillmentType") === "delivery"; 1492 if (isDelivery) { 1493 const giftOrderInformationPayload = getGiftOrderInformationPayload(); 1494 await submitGiftOrderInformation({ 1495 ...giftOrderInformationPayload 1496 }); 1497 } 1498 await cartCheckInventory(); 1499 } 1500 if (callBillingAddress) { 1501 const billingAddressPayload = getBillingAddressPayload(); 1502 await submitBillingAddress({ 1503 billingAddressPayload: { 1504 ...billingAddressPayload, 1505 sameAsShipping: getValues("useSameAsShipping") ? true : false 1506 } 1507 }); 1508 } 1509 }; 1510 /** 1511 * Handles gift card payment on Place Order click. 1512 * 1513 * SUFFICIENT: GC covers the full amount â submits order with GC data only 1514 * and navigates to confirmation. Returns true (fully handled). 1515 * 1516 * INSUFFICIENT: GC is a partial payment â calls submitOrderGC first to 1517 * register the GC portion, then returns false so the caller continues 1518 * with the remaining card payment. 1519 * 1520 * IDLE: no GC applied â returns false immediately. 1521 */ const handleGiftCardPayment = async ()=>{ 1522 var _giftCard_state; 1523 const giftCardState = (_giftCard_state = giftCard === null || giftCard === void 0 ? void 0 : giftCard.state) !== null && _giftCard_state !== void 0 ? _giftCard_state : constants/* GIFT_CARD_STATE */.C.IDLE; 1524 const giftCardEncryptedData = giftCard === null || giftCard === void 0 ? void 0 : giftCard.encryptedData; 1525 // SUFFICIENT â GC covers the full order amount 1526 if (giftCardState === constants/* GIFT_CARD_STATE */.C.SUFFICIENT && giftCardEncryptedData) { 1527 const orderResponse = await submitOrder({ 1528 paymentAuth: "", 1529 paymentData: JSON.stringify(giftCardEncryptedData), 1530 tipReceived: cart.driverTip 1531 }); 1532 if (orderResponse === null || orderResponse === void 0 ? void 0 : orderResponse.orderNumber) { 1533 push(paymentContants/* Confirmation_Page_Route */.cD); 1534 } 1535 return true; 1536 } 1537 // INSUFFICIENT â register GC partial payment, then fall through to card 1538 if (giftCardState === constants/* GIFT_CARD_STATE */.C.INSUFFICIENT && giftCardEncryptedData && submitOrderGC) { 1539 await submitOrderGC({ 1540 paymentData: JSON.stringify(giftCardEncryptedData), 1541 tipReceived: 0, 1542 paymentAuth: "" 1543 }); 1544 } 1545 return false; 1546 }; 1547 const submitCardOrder = async ()=>{ 1548 try { 1549 await mandatoryChecksBeforeSubmitOrder(true); 1550 const isGiftCardFullyHandled = await handleGiftCardPayment(); 1551 if (isGiftCardFullyHandled) return; 1552 // For INSUFFICIENT, include adyenOrderResponse so the backend can link 1553 // the GC partial payment to this card transaction. 1554 const adyenOrderResponse = giftCard === null || giftCard === void 0 ? void 0 : giftCard.adyenOrderResponse; 1555 const paymentDataWithGC = { 1556 ...paymentFormData, 1557 ...(adyenOrderResponse === null || adyenOrderResponse === void 0 ? void 0 : adyenOrderResponse.orderData) && { 1558 order: adyenOrderResponse 1559 } 1560 }; 1561 // Regular card payment (or remainder after partial GC payment) 1562 const orderResponse = await submitOrder({ 1563 paymentAuth: "", 1564 paymentData: JSON.stringify(paymentDataWithGC), 1565 tipReceived: cart.driverTip 1566 }); 1567 if (orderResponse === null || orderResponse === void 0 ? void 0 : orderResponse.orderNumber) { 1568 push(paymentContants/* Confirmation_Page_Route */.cD); 1569 } 1570 } catch (error) { 1571 console.log("Place order failed", { 1572 error 1573 }); 1574 onOrderSubmitFailed === null || onOrderSubmitFailed === void 0 ? void 0 : onOrderSubmitFailed(); 1575 } 1576 }; 1577 return { 1578 submitCardOrder, 1579 mandatoryChecksBeforeSubmitOrder 1580 }; 1581}; 1582 1583// EXTERNAL MODULE: ./node_modules/react/index.js 1584var react = __webpack_require__(667294); 1585// EXTERNAL MODULE: ./node_modules/@adyen/adyen-web/dist/es/adyen.css 1586var adyen = __webpack_require__(201640); 1587// EXTERNAL MODULE: ./node_modules/@adyen/adyen-web/dist/es/core/AdyenCheckout.js + 48 modules 1588var AdyenCheckout = __webpack_require__(969214); 1589// EXTERNAL MODULE: ./node_modules/@adyen/adyen-web/dist/es/components/PayPalFastlane/Fastlane.js + 2 modules 1590var Fastlane = __webpack_require__(924184); 1591// EXTERNAL MODULE: ./node_modules/@adyen/adyen-web/dist/es/components/Card/Card.js + 111 modules 1592var Card = __webpack_require__(790154); 1593// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/lib/constants/locale.js 1594var locale = __webpack_require__(808439); 1595// EXTERNAL MODULE: ./src/lib/hooks/useCustomer.ts 1596var useCustomer = __webpack_require__(643525); 1597// EXTERNAL MODULE: ./src/lib/store/cartSlice.ts + 1 modules 1598var cartSlice = __webpack_require__(484725); 1599// EXTERNAL MODULE: ./src/api/checkoutApi.ts 1600var checkoutApi = __webpack_require__(451881); 1601// EXTERNAL MODULE: ./src/lib/utils/locale.ts + 2 modules 1602var utils_locale = __webpack_require__(225220); 1603;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/paymentUtils.ts 1604const formatStoredCardLastFour = (card)=>{ 1605 return card.lastFour || "****"; 1606}; 1607const getStoredPaymentMethodId = (card)=>{ 1608 var _card_id; 1609 return (_card_id = card.id) !== null && _card_id !== void 0 ? _card_id : "stored-".concat(card.lastFour); 1610}; 1611 1612;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/cardPayment/useSavedCardRemove.tsx 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622const useSavedCardRemove = (param)=>{ 1623 let { isRemoving, setCardIdToRemove, cardIdToRemove, setIsRemoving, selectedOption, storedPaymentMethods, setSelectedOption, clearSelection } = param; 1624 const amount = (0,hooks/* useAppSelector */.C)(cartSlice/* selectOPCPaymentAmount */.ZJ); 1625 const dispatch = (0,hooks/* useAppDispatch */.T)(); 1626 const handleRemoveClick = (0,react.useCallback)((event, cardId)=>{ 1627 event.preventDefault(); 1628 event.stopPropagation(); 1629 if (!cardId || isRemoving) { 1630 return; 1631 } 1632 setCardIdToRemove(cardId); 1633 }, [ 1634 isRemoving, 1635 setCardIdToRemove 1636 ]); 1637 const handleConfirmRemove = (0,react.useCallback)(async ()=>{ 1638 const cardId = cardIdToRemove; 1639 if (!cardId) { 1640 return; 1641 } 1642 setCardIdToRemove(null); 1643 setIsRemoving(true); 1644 try { 1645 const success = await (0,checkoutApi/* postRemovePaymentMethodsAPI */.FR)({ 1646 recurringDetailReference: cardId 1647 }).then(()=>
1647true).catch(()=>false); 1648 if (success) { 1649 dispatch((0,onePageCheckoutPaymentSlice/* removeStoredPaymentMethod */.C5)(cardId)); 1650 if (selectedOption === cardId) { 1651 const remainingCards = storedPaymentMethods.filter((card)=>card.id !== cardId); 1652 setSelectedOption(remainingCards.length > 0 ? getStoredPaymentMethodId(remainingCards[0]) : paymentContants/* NEW_CARD_OPTION_VALUE */.Lm); 1653 clearSelection(); 1654 } 1655 dispatch((0,onePageCheckoutPaymentSlice/* getPaymentMethods */.Q8)(locale.CURRENCY_CODE, locale.CURRENT_COUNTRY_SHORT_CODE, amount, utils_locale/* LANGUAGE */.ad)); 1656 } 1657 } finally{ 1658 setIsRemoving(false); 1659 } 1660 }, [ 1661 amount, 1662 cardIdToRemove, 1663 clearSelection, 1664 dispatch, 1665 selectedOption, 1666 setCardIdToRemove, 1667 setIsRemoving, 1668 setSelectedOption, 1669 storedPaymentMethods 1670 ]); 1671 const handleCancelRemove = (0,react.useCallback)(()=>{ 1672 setCardIdToRemove(null); 1673 }, [ 1674 setCardIdToRemove 1675 ]); 1676 return { 1677 handleRemoveClick, 1678 handleConfirmRemove, 1679 handleCancelRemove 1680 }; 1681}; 1682 1683// EXTERNAL MODULE: ./node_modules/@adyen/adyen-web/dist/es/components/PayPalFastlane/initializeFastlane.js + 3 modules 1684var initializeFastlane = __webpack_require__(912943); 1685// EXTERNAL MODULE: ./src/lib/configs/environment.ts 1686var environment = __webpack_require__(208891); 1687// EXTERNAL MODULE: ./src/lib/hooks/index.ts + 13 modules 1688var lib_hooks = __webpack_require__(130414); 1689// EXTERNAL MODULE: ./src/components/one-page-checkout/hooks/payment/paymentTypes.ts 1690var paymentTypes = __webpack_require__(279533); 1691;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/fastlanePayment/useFastlaneInitializationOPC.ts 1692 1693 1694 1695 1696 1697 1698 1699 1700const PROD_ENVS = [ 1701 "prod", 1702 "production" 1703]; 1704const useFastlaneInitializationOPC = ()=>{ 1705 const dispatch = (0,hooks/* useAppDispatch */.T)(); 1706 const { fastlaneObj } = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectOnePageCheckoutPaymentSelector */.n$); 1707 const [status, setStatus] = (0,react.useState)({ 1708 isLoading: false, 1709 isInitialized: false 1710 }); 1711 const { isLoggedIn } = (0,lib_hooks/* useCustomer */.ON)(); 1712 const initFastlane = (0,react.useCallback)(async ()=>{ 1713 setStatus((prev)=>({ 1714 ...prev, 1715 isLoading: true 1716 })); 1717 try { 1718 var _process_env_NEXT_PUBLIC_NODE_ENV; 1719 const nodeEnv = (_process_env_NEXT_PUBLIC_NODE_ENV = "prod") !== null && _process_env_NEXT_PUBLIC_NODE_ENV !== void 0 ? _process_env_NEXT_PUBLIC_NODE_ENV : ""; 1720 const isLive = PROD_ENVS.includes(nodeEnv); 1721 const fastlane = await (0,initializeFastlane/* default */.Z)({ 1722 clientKey: environment.nextAppEnv.adyen.clientKey, 1723 environment: isLive ? "live" : "test", 1724 forceConsentDetails: !isLive 1725 }); 1726 const sdk = fastlane !== null && fastlane !== void 0 ? fastlane : null; 1727 dispatch((0,onePageCheckoutPaymentSlice/* setFastlaneObj */.ru)(sdk)); 1728 setStatus({ 1729 isLoading: false, 1730 isInitialized: true 1731 }); 1732 return sdk; 1733 } catch (error) { 1734 console.error("[useFastlaneInitialization] initFastlane error:", error); 1735 setStatus((prev)=>({ 1736 ...prev, 1737 isLoading: false 1738 })); 1739 return null; 1740 } 1741 }, [ 1742 dispatch 1743 ]); 1744 (0,react.useEffect)(()=>{ 1745 if (!paymentContants/* isPaypalFastlaneCheckoutEnabled */._2) return; 1746 initFastlane().catch(console.error); 1747 }, [ 1748 initFastlane 1749 ]); 1750 const validateFastlaneEmailOPC = (0,react.useCallback)(async (email)=>{ 1751 if (!fastlaneObj || !email) { 1752 console.warn("[useFastlaneInitialization] Fastlane object or email missing"); 1753 return; 1754 } 1755 try { 1756 const authResult = await fastlaneObj.authenticate(email); 1757 if (authResult.authenticationState === paymentTypes/* FastlaneAuthStatusOPC */.P.SUCCEEDED || authResult.authenticationState === paymentTypes/* FastlaneAuthStatusOPC */.P.NOT_FOUND) { 1758 const { paymentType, configuration } = await fastlaneObj.getComponentConfiguration(authResult); 1759 dispatch((0,onePageCheckoutPaymentSlice/* setFastlaneConfig */.Au)({ 1760 fastlaneAuthData: authResult, 1761 guestUserEmail: email, 1762 fastlaneCardsConfig: { 1763 paymentType, 1764 configuration 1765 }, 1766 isLoggedIn 1767 })); 1768 } else { 1769 // CANCELED or FAILED 1770 dispatch((0,onePageCheckoutPaymentSlice/* setFastlaneConfig */.Au)({ 1771 fastlaneAuthData: authResult, 1772 guestUserEmail: email, 1773 fastlaneCardsConfig: { 1774 paymentType: "fastlane", 1775 configuration: {} 1776 }, 1777 isLoggedIn 1778 })); 1779 } 1780 } catch (error) { 1781 // reset address if there is any error 1782 console.error("[useFastlaneInitialization] validateFastlaneEmailOPC error:", error); 1783 } 1784 }, [ 1785 dispatch, 1786 fastlaneObj, 1787 isLoggedIn 1788 ]); 1789 return { 1790 fastlaneObj, 1791 status, 1792 initFastlane, 1793 validateFastlaneEmailOPC 1794 }; 1795}; 1796 1797;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/fastlanePayment/useFastlanePayment.ts 1798/* provided dependency */ var Buffer = __webpack_require__(348764)["lW"]; 1799 1800 1801 1802 1803 1804const encodeFastlaneData = (payload)=>{ 1805 const serializedPayload = JSON.stringify(payload); 1806 if ( true && typeof window.btoa === "function") { 1807 return window.btoa(serializedPayload); 1808 } 1809 return Buffer.from(serializedPayload, "utf-8").toString("base64"); 1810}; 1811const useFastlanePayment = ()=>{ 1812 var _fastlaneConfigData_fastlaneAuthData; 1813 const { currency, languageCode } = locale.CURRENT_LOCALE; 1814 var _languageCode_substring; 1815 const country = (_languageCode_substring = languageCode === null || languageCode === void 0 ? void 0 : languageCode.substring(3, 5)) !== null && _languageCode_substring !== void 0 ? _languageCode_substring : "US"; 1816 const fastlaneConfigData = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectOnePageCheckoutFastlaneConfig */.EA); 1817 const authState = fastlaneConfigData === null || fastlaneConfigData === void 0 ? void 0 : (_fastlaneConfigData_fastlaneAuthData = fastlaneConfigData.fastlaneAuthData) === null || _fastlaneConfigData_fastlaneAuthData === void 0 ? void 0 : _fastlaneConfigData_fastlaneAuthData.authenticationState; 1818 const isFastlaneSucceeded = authState === paymentTypes/* FastlaneAuthStatusOPC */.P.SUCCEEDED; 1819 const isFastlaneNotFound = authState === paymentTypes/* FastlaneAuthStatusOPC */.P.NOT_FOUND;
1820 const getFastlaneAdyenConfig = (0,react.useCallback)((amount)=>{ 1821 if (!fastlaneConfigData) return null; 1822 const baseConfig = { 1823 amount: { 1824 value: amount, 1825 currency 1826 }, 1827 countryCode: country 1828 }; 1829 if (authState === paymentTypes/* FastlaneAuthStatusOPC */.P.SUCCEEDED) { 1830 var _fastlaneConfigData_fastlaneCardsConfig, _fastlaneConfigData_fastlaneCardsConfig1; 1831 return { 1832 ...baseConfig, 1833 ...(_fastlaneConfigData_fastlaneCardsConfig = fastlaneConfigData.fastlaneCardsConfig) === null || _fastlaneConfigData_fastlaneCardsConfig === void 0 ? void 0 : _fastlaneConfigData_fastlaneCardsConfig.configuration, 1834 type: ((_fastlaneConfigData_fastlaneCardsConfig1 = fastlaneConfigData.fastlaneCardsConfig) === null || _fastlaneConfigData_fastlaneCardsConfig1 === void 0 ? void 0 : _fastlaneConfigData_fastlaneCardsConfig1.paymentType) || "fastlane" 1835 }; 1836 } 1837 if (authState === paymentTypes/* FastlaneAuthStatusOPC */.P.NOT_FOUND) { 1838 var _fastlaneConfigData_fastlaneCardsConfig2; 1839 return { 1840 ...(_fastlaneConfigData_fastlaneCardsConfig2 = fastlaneConfigData.fastlaneCardsConfig) === null || _fastlaneConfigData_fastlaneCardsConfig2 === void 0 ? void 0 : _fastlaneConfigData_fastlaneCardsConfig2.configuration 1841 }; 1842 } 1843 return baseConfig; 1844 }, [ 1845 fastlaneConfigData, 1846 authState, 1847 currency, 1848 country 1849 ]); 1850 const getFastlanePaymentFormData = (0,react.useCallback)(()=>{ 1851 if (authState !== paymentTypes/* FastlaneAuthStatusOPC */.P.SUCCEEDED || !(fastlaneConfigData === null || fastlaneConfigData === void 0 ? void 0 : fastlaneConfigData.fastlaneCardsConfig)) { 1852 return null; 1853 } 1854 const configuration = fastlaneConfigData.fastlaneCardsConfig.configuration; 1855 const fastlaneSessionId = configuration === null || configuration === void 0 ? void 0 : configuration.fastlaneSessionId; 1856 const tokenId = configuration === null || configuration === void 0 ? void 0 : configuration.tokenId; 1857 if (!fastlaneSessionId || !tokenId) { 1858 return null; 1859 } 1860 return { 1861 paymentMethod: { 1862 type: fastlaneConfigData.fastlaneCardsConfig.paymentType || "fastlane", 1863 fastlaneData: encodeFastlaneData({ 1864 fastlaneSessionId, 1865 tokenId 1866 }) 1867 } 1868 }; 1869 }, [ 1870 authState, 1871 fastlaneConfigData 1872 ]); 1873 return { 1874 isFastlaneSucceeded, 1875 isFastlaneNotFound, 1876 fastlaneConfigData, 1877 getFastlaneAdyenConfig, 1878 getFastlanePaymentFormData 1879 }; 1880}; 1881 1882;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/fastlanePayment/index.ts 1883 1884 1885 1886// EXTERNAL MODULE: ./src/components/one-page-checkout/constants/payment.ts 1887var payment = __webpack_require__(11166); 1888;// CONCATENATED MODULE: ./src/components/one-page-checkout/utils/paymentUtils.ts 1889 1890const checkIfIsPaymentProcessing = (paymentState)=>paymentState === payment/* PaymentState */.K.PENDING || paymentState === payment/* PaymentState */.K.PAYMENT_SUBMITTED; 1891 1892;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/useIsPaymentDisabled.ts 1893 1894 1895 1896 1897 1898const useIsPaymentDisabled = ()=>{ 1899 var _cart_lineItems; 1900 const { cart, membershipItemInTheCart, onlyMembershipItemInTheCart, isUpdatingQty } = (0,context.useCartContext)(); 1901 const { selectedAddressId, selectedWindowId, membershipTermsAccepted, savedPickupDetail
1901s, fulfillmentType } = (0,one_page_checkout/* useGetOpcFormValues */.BC)(); 1902 const { paymentState, isCheckoutReady } = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectOnePageCheckoutPaymentSelector */.n$); 1903 const isDeliveryAddressDetailsValid = fulfillmentType === "delivery" && Boolean(selectedAddressId); 1904 const isPickupAddressDetailsValid = fulfillmentType === "pickup" && !!(savedPickupDetails === null || savedPickupDetails === void 0 ? void 0 : savedPickupDetails.firstName); 1905 const isAddressDetailsValid = isDeliveryAddressDetailsValid || isPickupAddressDetailsValid; 1906 const hasDeliveryWindow = Boolean(selectedWindowId); 1907 const hasCartAmount = (cart === null || cart === void 0 ? void 0 : (_cart_lineItems = cart.lineItems) === null || _cart_lineItems === void 0 ? void 0 : _cart_lineItems.length) > 0 && (cart === null || cart === void 0 ? void 0 : cart.totalAmount) > 0; 1908 const isPaymentProcessing = checkIfIsPaymentProcessing(paymentState); 1909 const isMembershipTermsRequired = membershipItemInTheCart && !membershipTermsAccepted; 1910 const commonDisableConditions = !hasCartAmount || isPaymentProcessing || !isCheckoutReady || isUpdatingQty || isMembershipTermsRequired; 1911 const isPaymentDisabled = onlyMembershipItemInTheCart ? commonDisableConditions : commonDisableConditions || !isAddressDetailsValid || !hasDeliveryWindow; 1912 return { 1913 isPaymentDisabled 1914 }; 1915}; 1916 1917;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/cardPayment/useIsPlaceOrderBtnDisabled.ts 1918 1919 1920 1921 1922 1923const useIsPlaceOrderBtnDisabled = ()=>{ 1924 const { isPaymentDisabled } = useIsPaymentDisabled(); 1925 const { isBillingAddressError } = (0,one_page_checkout/* useGetOpcFormValues */.BC)(); 1926 const { isValidPaymentMethod, giftCard } = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectOnePageCheckoutPaymentSelector */.n$); 1927 const isGiftCardSufficient = (giftCard === null || giftCard === void 0 ? void 0 : giftCard.state) === constants/* GIFT_CARD_STATE */.C.SUFFICIENT && !!(giftCard === null || giftCard === void 0 ? void 0 : giftCard.encryptedData); 1928 const isPlaceOrderButtonDisabled = isPaymentDisabled || isBillingAddressError || !isValidPaymentMethod && !isGiftCardSufficient; 1929 return { 1930 isPlaceOrderButtonDisabled 1931 }; 1932}; 1933 1934;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/cardPayment/useCardPayment.ts 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951const currency = locale.CURRENCY_CODE; 1952const useCardPayment = ()=>{ 1953 var _paymentMethodsResponse_paymentMethods; 1954 const dispatch = (0,hooks/* useAppDispatch */.T)(); 1955 const router = (0,next_router.useRouter)(); 1956 const cardContainerRef = (0,react.useRef)(null); 1957 const cardInstanceRef = (0,react.useRef)(null); 1958 const checkoutRef = (0,react.useRef)(null); 1959 const fastlaneConfigData = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectOnePageCheckoutFastlaneConfig */.EA); 1960 const hasInitializedStoredRef = (0,react.useRef)(false); 1961 const lastMountedKeyRef = (0,react.useRef)(null); 1962 const prevHasStoredCardsRef = (0,react.useRef)(false); 1963 const [error, setError] = (0,react.useState)(null); 1964 const [selectedOption, setSelectedOption] = (0,react.useState)(paymentContants/* NEW_CARD_OPTION_VALUE */.Lm); 1965 const [isRemoving, setIsRemoving] = (0,react.useState)(false); 1966 const [cardIdToRemove, setCardIdToRemove] = (0,react.useState)(null); 1967 const { globalConfig, cardConfig, storedCardConfig, paymentState } = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectOnePageCheckoutPaymentSelector */.n$); 1968 const { paymentMethodsResponse } = globalConfig; 1969 const { isLoggedIn } = (0,useCustomer/* useCustomer */.O)(); 1970 const amount = (0,hooks/* useAppSelector */.C)(cartSlice/* selectOPCPaymentAmount */.ZJ); 1971 const { isGuestFormSubmitted } = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectOnePageCheckoutPaymentSelector */.n$); 1972 const shouldShowCheckoutForm = isLoggedIn || isGuestFormSubmitted; 1973 const { isFastlaneSucceeded, isFastlaneNotFound, getFastlaneAdye
1973nConfig, getFastlanePaymentFormData } = useFastlanePayment(); 1974 const storedPaymentMethods = (0,react.useMemo)(()=>{ 1975 var _paymentMethodsResponse_storedPaymentMethods; 1976 return (_paymentMethodsResponse_storedPaymentMethods = paymentMethodsResponse === null || paymentMethodsResponse === void 0 ? void 0 : paymentMethodsResponse.storedPaymentMethods) !== null && _paymentMethodsResponse_storedPaymentMethods !== void 0 ? _paymentMethodsResponse_storedPaymentMethods : []; 1977 }, [ 1978 paymentMethodsResponse === null || paymentMethodsResponse === void 0 ? void 0 : paymentMethodsResponse.storedPaymentMethods 1979 ]); 1980 const hasStoredCards = storedPaymentMethods.length > 0; 1981 const fastlaneComponentConfig = (0,react.useMemo)(()=>getFastlaneAdyenConfig(amount), [ 1982 getFastlaneAdyenConfig, 1983 amount 1984 ]); 1985 const hasFastlaneOption = !hasStoredCards && isFastlaneSucceeded && !!fastlaneComponentConfig; 1986 const handlePaymentFormChange = (0,react.useCallback)((state)=>{ 1987 var _state_data, _data_paymentMethod; 1988 const paymentMethod = ((_state_data = state.data) === null || _state_data === void 0 ? void 0 : _state_data.paymentMethod) || state.paymentMethod; 1989 if (!paymentMethod) return; 1990 var _state_data1; 1991 let data = (_state_data1 = state.data) !== null && _state_data1 !== void 0 ? _state_data1 : { 1992 paymentMethod 1993 }; 1994 const isCardPayment = (data === null || data === void 0 ? void 0 : (_data_paymentMethod = data.paymentMethod) === null || _data_paymentMethod === void 0 ? void 0 : _data_paymentMethod.type) === "scheme"; 1995 const hasEmail = !!(fastlaneConfigData === null || fastlaneConfigData === void 0 ? void 0 : fastlaneConfigData.guestUserEmail); 1996 if (isFastlaneNotFound && isCardPayment && state.isValid && hasEmail) { 1997 // Need to use any because there is a bug in the Adyen wen sdk library, the library does not recognise `shopperEmail` attribute 1998 data.shopperEmail = fastlaneConfigData.guestUserEmail; 1999 } 2000 dispatch((0,onePageCheckoutPaymentSlice/* setPaymentFormData */.Lk)(data)); 2001 dispatch((0,onePageCheckoutPaymentSlice/* setIsValidPaymentMethod */.E7)(state.isValid)); 2002 if (state.isValid) { 2003 setError(null); 2004 } 2005 }, [ 2006 dispatch, 2007 fastlaneConfigData.guestUserEmail, 2008 isFastlaneNotFound 2009 ]); 2010 const clearSelection = (0,react.useCallback)(()=>{ 2011 dispatch((0,onePageCheckoutPaymentSlice/* setPaymentFormData */.Lk)(null)); 2012 dispatch((0,onePageCheckoutPaymentSlice/* setIsValidPaymentMethod */.E7)(false)); 2013 }, [ 2014 dispatch 2015 ]); 2016 const applyFastlaneSelection = (0,react.useCallback)(()=>{ 2017 const fastlanePaymentFormData = getFastlanePaymentFormData(); 2018 if (!fastlanePaymentFormData) { 2019 clearSelection(); 2020 return; 2021 } 2022 dispatch((0,onePageCheckoutPaymentSlice/* setPaymentFormData */.Lk)(fastlanePaymentFormData)); 2023 dispatch((0,onePageCheckoutPaymentSlice/* setIsValidPaymentMethod */.E7)(true)); 2024 setError(null); 2025 }, [ 2026 clearSelection, 2027 dispatch, 2028 getFastlanePaymentFormData 2029 ]); 2030 const handleSelectOption = (0,react.useCallback)((id)=>{ 2031 setSelectedOption(id); 2032 clearSelection(); 2033 setCardIdToRemove(null); 2034 }, [ 2035 clearSelection 2036 ]); 2037 const unmountCard = (0,react.useCallback)(()=>{ 2038 try { 2039 var _cardInstanceRef_current; 2040 (_cardInstanceRef_current = cardInstanceRef.current) === null || _cardInstanceRef_current === void 0 ? void 0 : _cardInstanceRef_current.unmount(); 2041 } catch (err) { 2042 console.warn("Adyen Card unmount failed:", err); 2043 } 2044 cardInstanceRef.current = null; 2045 checkoutRef.current = null; 2046 }, []); 2047 const mountCard = (0,react.useCallback)(async function(storedCard) { 2048 let useFastlane = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; 2049 if (!cardContainerRef.current || !globalConfig.clientKey || !shouldShowCheckoutForm) { 2050 return; 2051 } 2052 unmountCard(); 2053 try { 2054 if (!checkoutRef.current) { 2055 checkoutRef.current = await (0,AdyenCheckout/* AdyenCheckout */.w)({ 2056 ...globalConfig, 2057 amount: { 2058 value: amount, 2059 currency 2060 }, 2061 onError: (err)=>{ 2062 setError(err.message); 2063 dispatch((0,onePageCheckoutPaymentSlice/* setPaymentState */.Je)(constants/* PaymentState */.K.ERROR)); 2064 } 2065 }); 2066 } 2067 if (useFastlane) { 2068 if (!fastlaneComponentConfig) { 2069 clearSelection(); 2070 return; 2071 } 2072 const fastlaneComponent = new Fastlane/* default */.Z(checkoutRef.current, { 2073 ...fastlaneComponentConfig,
2074 showPayButton: false, 2075 onChange: handlePaymentFormChange 2076 }); 2077 fastlaneComponent.mount(cardContainerRef.current); 2078 cardInstanceRef.current = fastlaneComponent; 2079 applyFastlaneSelection(); 2080 return; 2081 } 2082 const notFoundConfig = isFastlaneNotFound && !storedCard ? getFastlaneAdyenConfig(amount) : {}; 2083 const config = { 2084 onChange: handlePaymentFormChange, 2085 ...storedCard ? { 2086 ...storedCard, 2087 ...storedCardConfig 2088 } : { 2089 ...cardConfig, 2090 ...notFoundConfig, 2091 enableStoreDetails: isLoggedIn 2092 } 2093 }; 2094 const cardComponent = new Card/* CardElement */.N(checkoutRef.current, config); 2095 cardComponent.mount(cardContainerRef.current); 2096 cardInstanceRef.current = cardComponent; 2097 } catch (err) { 2098 console.error("Failed to mount Adyen Card:", err); 2099 setError(err instanceof Error ? err.message : "Failed to load payment form."); 2100 dispatch((0,onePageCheckoutPaymentSlice/* setPaymentState */.Je)(constants/* PaymentState */.K.ERROR)); 2101 } 2102 }, [ 2103 amount, 2104 applyFastlaneSelection, 2105 cardConfig, 2106 clearSelection, 2107 dispatch, 2108 fastlaneComponentConfig, 2109 getFastlaneAdyenConfig, 2110 globalConfig, 2111 handlePaymentFormChange, 2112 isFastlaneNotFound, 2113 isLoggedIn, 2114 shouldShowCheckoutForm, 2115 storedCardConfig, 2116 unmountCard 2117 ]); 2118 (0,react.useEffect)(function useMountSelectedPaymentMethodEffect() { 2119 var _paymentMethodsResponse_paymentMethods; 2120 if (!(paymentMethodsResponse === null || paymentMethodsResponse === void 0 ? void 0 : (_paymentMethodsResponse_paymentMethods = paymentMethodsResponse.paymentMethods) === null || _paymentMethodsResponse_paymentMethods === void 0 ? void 0 : _paymentMethodsResponse_paymentMethods.length) || !cardContainerRef.current) { 2121 return; 2122 } 2123 if (!hasInitializedStoredRef.current) { 2124 const defaultOption = storedPaymentMethods.length > 0 && isLoggedIn ? getStoredPaymentMethodId(storedPaymentMethods[0]) : hasFastlaneOption ? paymentContants/* FASTLANE_OPTION_VALUE */.Ms : paymentContants/* NEW_CARD_OPTION_VALUE */.Lm; 2125 hasInitializedStoredRef.current = true; 2126 if (selectedOption !== defaultOption) { 2127 setSelectedOption(defaultOption); 2128 return; 2129 } 2130 } 2131 if (!hasFastlaneOption && selectedOption === paymentContants/* FASTLANE_OPTION_VALUE */.Ms) { 2132 setSelectedOption(paymentContants/* NEW_CARD_OPTION_VALUE */.Lm); 2133 return; 2134 } 2135 if (prevHasStoredCardsRef.current !== hasStoredCards) { 2136 lastMountedKeyRef.current = null; 2137 prevHasStoredCardsRef.current = hasStoredCards; 2138 } 2139 var _storedPaymentMethods_find; 2140 const storedCard = selectedOption === paymentContants/* NEW_CARD_OPTION_VALUE */.Lm || selectedOption === paymentContants/* FASTLANE_OPTION_VALUE */.Ms ? null : (_storedPaymentMethods_find = storedPaymentMethods.find((card)=>getStoredPaymentMethodId(card) === selectedOption)) !== null && _storedPaymentMethods_find !== void 0 ? _storedPaymentMethods_find : null; 2141 const useFastlane = selectedOption === paymentContants/* FASTLANE_OPTION_VALUE */.Ms && !storedCard && hasFastlaneOption; 2142 var _storedCard_id; 2143 const mountedKey = useFastlane ? "fastlane-".concat(amount) : selectedOption === paymentContants/* NEW_CARD_OPTION_VALUE */.Lm ? "new-".concat(amount) : "".concat((_storedCard_id = storedCard === null || storedCard === void 0 ? void 0 : storedCard.id) !== null && _storedCard_id !== void 0 ? _storedCard_id : selectedOption, "-").concat(amount); 2144 if (lastMountedKeyRef.current === mountedKey) { 2145 return; 2146 } 2147 lastMountedKeyRef.current = mountedKey; 2148 mountCard(storedCard, useFastlane); 2149 }, [ 2150 amount, 2151 hasFastlaneOption, 2152 hasStoredCards, 2153 isLoggedIn, 2154 mountCard, 2155 paymentMethodsResponse, 2156 selectedOption, 2157 storedPaymentMethods 2158 ]); 2159 (0,react.useEffect)(function useCleanupOnUnmountEffect() { 2160 return ()=>{ 2161 unmountCard(); 2162 checkoutRef.current = null; 2163 if (!router.asPath.includes("one-page-checkout")) { 2164 dispatch((0,onePageCheckoutPaymentSlice/* clearPaymentSession */.bn)()); 2165 } 2166 }; 2167 }, [ 2168 dispatch, 2169 router.asPath, 2170 unmountCard 2171 ]); 2172 (0,react.useEffect)(function useClearFastlanePostSuccessEffect() { 2173 if (paymentState === constants/* PaymentState */.K.SUCCESS) { 2174 dispatch((0,onePageCheckoutPaymentSlice/* clearFastlaneConfig */.RU)()); 2175 } 2176 }, [ 2177 dispatch, 2178 paymentState 2179 ]); 2180 const isLoading = !(paymentMethodsResponse === null || paymentMethodsResponse === void 0 ? void 0 : (_paymentMethodsResponse_paymentMethods = paymentMethodsResponse.paymentMethods) === null || _paymentMethodsResponse_paymentMethods === void 0 ? void 0 : _paymentMethodsResponse_paymentMethods.length); 2181 const { handleRemoveClick, handleConfirmRemove, handleCancelRemove } = useSavedCardRemove({ 2182 isRemoving, 2183 setCardIdToRemove, 2184 cardIdToRemove, 2185 setIsRemoving, 2186 selectedOption, 2187 storedPaymentMethods, 2188 setSelectedOption, 2189 clearSelection 2190 }); 2191 const { isPlaceOrderButtonDisabled } = useIsPlaceOrderBtnDisabled(); 2192 const { submitCardOrder } = useSubmitCardOrder(); 2193 return { 2194 cardContainerRef, 2195 storedPaymentMethods, 2196 selectedOption, 2197 error, 2198 isRemoving, 2199 cardIdToRemove, 2200 hasStoredCards, 2201 hasFastlaneOption, 2202 isLoading, 2203 handleSelectOption, 2204 setCardIdToRemove, 2205 setIsRemoving, 2206 setSelectedOption, 2207 clearSelection, 2208 handleRemoveClick, 2209 handleConfirmRemove, 2210 handleCancelRemove, 2211 isPlaceOrderButtonDisabled, 2212 submitCardOrder 2213 }; 2214}; 2215 2216;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/cardPayment/index.ts 2217 2218 2219 2220// EXTERNAL MODULE: ./node_modules/@adyen/adyen-web/dist/es/components/ApplePay/ApplePay.js + 9 modules 2221var ApplePay = __webpack_require__(364071); 2222// EXTERNAL MODULE: ./src/components/checkout/payment/paymentMethodConstants.ts 2223var paymentMethodConstants = __webpack_require__(543467); 2224// EXTERNAL MODULE: ./src/lib/store/paymentSlice.ts 2225var paymentSlice = __webpack_require__(680811); 2226// EXTERNAL MODULE: ./src/lib/events.ts 2227var events = __webpack_require__(866067); 2228// EXTERNAL MODULE: ./src/lib/store/orderSubmit.slice.ts 2229var orderSubmit_slice = __webpack_require__(564449); 2230// EXTERNAL MODULE: ./src/lib/types/adyen-giftcard.types.ts 2231var adyen_giftcard_types = __webpack_require__(939549); 2232// EXTERNAL MODULE: ./src/lib/utils/reduxCommon.ts 2233var reduxCommon = __webpack_require__(675121); 2234;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/digitalWalletPayments/utils/giftCardPreAuth.ts 2235 2236 2237 2238const handleGiftCardPreAuth = async function() { 2239 let paymentAuth = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ""; 2240 const { giftCard } = (0,reduxCommon/* getReduxStore */.vI)().onePageCheckoutPayment; 2241 if ((giftCard === null || giftCard === void 0 ? void 0 : giftCard.state) === adyen_giftcard_types/* GiftCardState */.s.INSUFFICIENT && (giftCard === null || giftCard === void 0 ? void 0 : giftCard.encryptedData)) { 2242 await (0,checkoutApi/* submitOrderGC */.FL)({ 2243 paymentData: JSON.stringify(giftCard.encryptedData), 2244 tipReceived: 0, 2245 paymentAuth 2246 }); 2247 return { 2248 adyenOrderResponse: giftCard.adyenOrderResponse 2249 }; 2250 } 2251 return {}; 2252}; 2253 2254;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/digitalWalletPayments/utils/applePayUtils.ts 2255 2256 2257 2258 2259 2260 2261 2262 2263const { currency: applePayUtils_currency } = locale.CURRENT_LOCALE; 2264const handleServerResponse = (res, actions, dispatch, push)=>{ 2265 if (res.action) { 2266 const parsed = JSON.parse(res.action); 2267 if (parsed.action) { 2268 actions.resolve({ 2269 action: parsed.action 2270 }); 2271 return; 2272 } 2273 } 2274 if (paymentContants/* Order_Accepted_Order_States */.Xv.includes(res.orderstate)) { 2275 actions.resolve({ 2276 resultCode: res.orderstate 2277 }); 2278 dispatch((0,orderSubmit_slice/* setOrderSubmitResponse */.VN)(res)); 2279 push(paymentContants/* Confirmation_Page_Route */.cD); 2280 } else { 2281 actions.reject(); 2282 } 2283}; 2284const createApplePayHandlers = (dispatch, cart, push, mandatoryChecksBeforeSubmitOrder)=>{ 2285 const onAdditionalDetails = async (state, _component, actions)=>{ 2286 try { 2287 var _cart_driverTip, _cart_paymentAuth; 2288 const payload = { 2289 paymentData: JSON.stringify(state.data), 2290 tipReceived: (_cart_driverTip = cart === null || cart === void 0 ? void 0 : cart.driverTip) !== null && _cart_driverTip !== void 0 ? _cart_driverTip : 0, 2291 paymentAuth: (_cart_paymentAuth = cart === null || cart === void 0 ? void 0 : cart.paymentAuth) !== null && _cart_paymentAuth !== void 0 ? _cart_paymentAuth : "" 2292 }; 2293 const response = await (0,checkoutApi/* submitAdditionalDetails */.b6)(payload); 2294 handleServerResponse(response.data, actions, dispatch, push); 2295 } catch (e) { 2296 actions.reject(); 2297 dispatch((0,onePageCheckoutPaymentSlice/* setPaymentState */.Je)(constants/* PaymentState */.K.ERROR)); 2298 } 2299 }; 2300 const onError = (err)=>{ 2301 if (err.name === paymentContants/* Paypal_Error_Name_Cancel */.JG) return; 2302 dispatch((0,onePageCheckoutPaymentSlice/* setPaymentState */.Je)(constants/* PaymentState */.K.ERROR)); 2303 }; 2304 const onSubmit = async (state, _component, actions)=>{ 2305 try { 2306 await mandatoryChecksBeforeSubmitOrder(false); 2307 var _cart_paymentAuth; 2308 const { adyenOrderResponse } = await handleGiftCardPreAuth((_cart_paymentAuth = cart === null || cart === void 0 ? void 0 : cart.paymentAuth) !== null && _cart_paymentAuth !== void 0 ? _cart_paymentAuth : ""); 2309 const paymentData = { 2310 ...state.data, 2311 ...(adyenOrderResponse === null || adyenOrderResponse === void 0 ? void 0 : adyenOrderResponse.orderData) && { 2312 order: adyenOrderResponse 2313 } 2314 }; 2315 var _cart_driverTip, _cart_paymentAuth1; 2316 const payload = { 2317 paymentData: JSON.stringify(paymentData), 2318 tipReceived: (_cart_driverTip = cart === null || cart === void 0 ? void 0 : cart.driverTip) !== null && _cart_driverTip !== void 0 ? _cart_driverTip : 0, 2319 paymentAuth: (_cart_paymentAuth1 = cart === null || cart === void 0 ? void 0 : cart.paymentAuth) !== null && _cart_paymentAuth1 !== void 0 ? _cart_paymentAuth1 : "" 2320 }; 2321 const response = await (0,checkoutApi/* submitOrder */.pm)(payload); 2322 handleServerResponse(response.data, actions, dispatch, push); 2323 } catch (e) { 2324 actions.reject(); 2325 dispatch((0,onePageCheckoutPaymentSlice/* setPaymentState */.Je)(constants/* PaymentState */.K.ERROR));
2326 events/* default */.Z.emit(events/* OrderEventType */.v.ORDER_SUBMIT_FAILED); 2327 } 2328 }; 2329 // Fires before onSubmit â must resolve/reject to continue the payment flow 2330 const onAuthorized = (_data, actions)=>{ 2331 actions.resolve(); 2332 }; 2333 return { 2334 onAdditionalDetails, 2335 onError, 2336 onSubmit, 2337 onAuthorized 2338 }; 2339}; 2340const getApplePayConfig = (globalConfig, amount, dispatch, cart, push, applePayMethod, mandatoryChecksBeforeSubmitOrder)=>{ 2341 const { onAdditionalDetails, onError, onSubmit, onAuthorized } = createApplePayHandlers(dispatch, cart, push, mandatoryChecksBeforeSubmitOrder); 2342 return { 2343 checkoutConfig: { 2344 ...globalConfig, 2345 amount: { 2346 value: amount, 2347 currency: applePayUtils_currency 2348 }, 2349 onAdditionalDetails 2350 }, 2351 applePayConfig: { 2352 showPayButton: false, 2353 totalPriceLabel: "Wild Fork Foods", 2354 onAuthorized, 2355 onSubmit, 2356 onError, 2357 ...applePayMethod 2358 } 2359 }; 2360}; 2361 2362;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/digitalWalletPayments/useApplePay.ts 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373const useApplePay = ()=>{ 2374 const dispatch = (0,hooks/* useAppDispatch */.T)(); 2375 const hiddenContainerRef = (0,react.useRef)(null); 2376 const applePayInstanceRef = (0,react.useRef)(null); 2377 const checkoutRef = (0,react.useRef)(null); 2378 const lastMountedAmountRef = (0,react.useRef)(null); 2379 const cart = (0,hooks/* useAppSelector */.C)(cartSlice/* cartSliceSelector */.Ew); 2380 const { globalConfig } = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectOnePageCheckoutPaymentSelector */.n$); 2381 const { paymentMethodsResponse } = globalConfig; 2382 const amount = (0,hooks/* useAppSelector */.C)(cartSlice/* selectOPCPaymentAmount */.ZJ); 2383 const { push } = (0,next_router.useRouter)(); 2384 const { mandatoryChecksBeforeSubmitOrder } = useSubmitCardOrder(); 2385 const mountApplePay = (0,react.useCallback)(async ()=>{ 2386 dispatch((0,onePageCheckoutPaymentSlice/* setIsApplePayReady */.RB)(false)); 2387 try { 2388 var _applePayInstanceRef_current; 2389 (_applePayInstanceRef_current = applePayInstanceRef.current) === null || _applePayInstanceRef_current === void 0 ? void 0 : _applePayInstanceRef_current.unmount(); 2390 } catch (e) {} 2391 applePayInstanceRef.current = null; 2392 checkoutRef.current = null; 2393 const applePayMethod = paymentMethodsResponse.paymentMethods.find((m)=>m.type === paymentMethodConstants/* PAYMENT_METHODS */.LM.APPLE_PAY); 2394 const { checkoutConfig, applePayConfig } = getApplePayConfig(globalConfig, amount, dispatch, cart, push, applePayMethod, mandatoryChecksBeforeSubmitOrder); 2395 checkoutRef.current = await (0,AdyenCheckout/* AdyenCheckout */.w)(checkoutConfig); 2396 const instance = new ApplePay/* default */.Z(checkoutRef.current, applePayConfig); 2397 try { 2398 await instance.isAvailable(); 2399 dispatch((0,onePageCheckoutPaymentSlice/* setIsApplePayAvailable */.Dd)(true)); 2400 } catch (e) { 2401 // Device/browser does not support Apple Pay â button stays disabled 2402 dispatch((0,onePageCheckoutPaymentSlice/* setIsApplePayAvailable */.Dd)(false)); 2403 return; 2404 } 2405 // Mount into a self-managed hidden container so the SDK can complete 2406 // initialization and handle payment callbacks, without coupling the 2407 // mount target to any specific layout component. 2408 if (!hiddenContainerRef.current) { 2409 const container = document.createElement("div"); 2410 container.style.display = "none"; 2411 document.body.appendChild(container); 2412 hiddenContainerRef.current = container; 2413 } 2414 instance.mount(hiddenContainerRef.current); 2415 applePayInstanceRef.current = instance; 2416 lastMountedAmountRef.current = amount; 2417 dispatch((0,onePageCheckoutPaymentSlice/* setIsApplePayReady */.RB)(true)); 2418 }, [ 2419 amount, 2420 cart, 2421 dispatch, 2422 globalConfig, 2423 mandatoryChecksBeforeSubmitOrder, 2424 paymentMethodsResponse.paymentMethods, 2425 push 2426 ]); 2427 const submitApplePay = (0,react.useCallback)(()=>{ 2428 try { 2429 var _applePayInstanceRef_current; 2430 (_applePayInstanceRef_current = applePayInstanceRef.current) === null || _applePayInstanceRef_current === void 0 ? void 0 : _applePayInstanceRef_current.submit(); 2431 } catch (e) {} 2432 }, []); 2433 // Eagerly mount when payment methods and clientKey are available 2434 (0,react.useEffect)(()=>{ 2435 if (!paymentMethodsResponse.paymentMethods.length) return; 2436 if (!globalConfig.clientKey) return; 2437 if (lastMountedAmountRef.current === amount) return; 2438 mountApplePay().catch(()=>{ 2439 dispatch((0,onePageCheckoutPaymentSlice/* setPaymentState */.Je)(paymentSlice/* PaymentState */.Ky.ERROR)); 2440 }); 2441 }, [ 2442 amount, 2443 dispatch, 2444 globalConfig.clientKey, 2445 mountApplePay, 2446 paymentMethodsResponse.paymentMethods.length 2447 ]); 2448 // Re-mount on amount change 2449 (0,react.useEffect)(()=>{ 2450 if (!lastMountedAmountRef.current) return; 2451 if (lastMountedAmountRef.current === amount) return; 2452 mountApplePay().catch(()=>{ 2453 dispatch((0,onePageCheckoutPaymentSlice/* setPaymentState */.Je)(paymentSlice/* PaymentState */.Ky.ERROR)); 2454 }); 2455 }, [ 2456 amount, 2457 dispatch, 2458 mountApplePay 2459 ]); 2460 // Cleanup on unmount 2461 (0,react.useEffect)(()=>{ 2462 return ()=>{ 2463 try { 2464 var _applePayInstanceRef_current; 2465 (_applePayInstanceRef_current = applePayInstanceRef.current) === null || _applePayInstanceRef_current === void 0 ? void 0 : _applePayInstanceRef_current.unmount(); 2466 } catch (e) {} 2467 applePayInstanceRef.current = null; 2468 checkoutRef.current = null; 2469 if (hiddenContainerRef.current) { 2470 document.body.removeChild(hiddenContainerRef.current); 2471 hiddenContainerRef.current = null; 2472 } 2473 }; 2474 }, []); 2475 return { 2476 submitApplePay 2477 }; 2478}; 2479 2480// EXTERNAL MODULE: ./node_modules/@adyen/adyen-web/dist/es/components/GooglePay/GooglePay.js + 6 modules 2481var GooglePay = __webpack_require__(739536); 2482// EXTERNAL MODULE: ./src/lib/store/uiStateSlice.ts 2483var uiStateSlice = __webpack_require__(647771); 2484;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/digitalWalletPayments/utils/googlePayUtils.ts 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494// import { convertToDollar } from '@Lib/utils/currency'; 2495const { currency: googlePayUtils_currency } = locale.CURRENT_LOCALE; 2496const googlePayUtils_handleServerResponse = (res, actions, dispatch, push)=>{ 2497 if (paymentContants/* Order_Accepted_Order_States */.Xv.includes(res.orderstate)) { 2498 actions.resolve({ 2499 resultCode: res.orderstate 2500 }); 2501 dispatch((0,orderSubmit_slice/* setOrderSubmitResponse */.VN)(res)); 2502 push(paymentContants/* Confirmation_Page_Route */.cD); 2503 } else { 2504 actions.reject(); 2505 } 2506}; 2507const createGooglePayHandlers = (dispatch, cart, push, mandatoryChecksBeforeSubmitOrder)=>{ 2508 const onError = (err)=>{ 2509 if (err.name === paymentContants/* Paypal_Error_Name_Cancel */.JG) return; 2510 dispatch((0,onePageCheckoutPaymentSlice/* setPaymentState */.Je)(constants/* PaymentState */.K.ERROR)); 2511 }; 2512 const onSubmit = async (state, _component, actions)=>{ 2513 try { 2514 await mandatoryChecksBeforeSubmitOrder(false); 2515 var _cart_paymentAuth; 2516 const { adyenOrderResponse } = await handleGiftCardPreAuth((_cart_paymentAuth = cart === null || cart === void 0 ? void 0 : cart.paymentAuth) !== null && _cart_paymentAuth !== void 0 ? _cart_paymentAuth : ""); 2517 const paymentData = { 2518 ...state.data, 2519 ...(adyenOrderResponse === null || adyenOrderResponse === void 0 ? void 0 : adyenOrderResponse.orderData) && { 2520 order: adyenOrderResponse 2521 } 2522 }; 2523 var _cart_driverTip, _cart_paymentAuth1; 2524 const payload = { 2525 paymentData: JSON.stringify(paymentData), 2526 tipReceived: (_cart_driverTip = cart === null || cart === void 0 ? void 0 : cart.driverTip) !== null && _cart_driverTip !== void 0 ? _cart_driverTip : 0, 2527 paymentAuth: (_cart_paymentAuth1 = cart === null || cart === void 0 ? void 0 : cart.paymentAuth) !== null && _cart_paymentAuth1 !== void 0 ? _cart_paymentAuth1 : "" 2528 }; 2529 const response = await (0,checkoutApi/* submitOrder */.pm)(payload); 2530 googlePayUtils_handleServerResponse(response.data, actions, dispatch, push); 2531 } catch (e) { 2532 actions.reject(); 2533 dispatch((0,onePageCheckoutPaymentSlice/* setPaymentState */.Je)(constants/* PaymentState */.K.ERROR));
2534 events/* default */.Z.emit(events/* OrderEventType */.v.ORDER_SUBMIT_FAILED); 2535 } 2536 }; 2537 // Fires before onSubmit â must resolve/reject to continue the payment flow 2538 const onAuthorized = (_data, actions)=>{ 2539 actions.resolve(); 2540 }; 2541 return { 2542 onError, 2543 onSubmit, 2544 onAuthorized 2545 }; 2546}; 2547const getGooglePayConfig = (globalConfig, amount, dispatch, cart, push, googlePayMethod, mandatoryChecksBeforeSubmitOrder)=>{ 2548 const { onError, onSubmit, onAuthorized } = createGooglePayHandlers(dispatch, cart, push, mandatoryChecksBeforeSubmitOrder); 2549 return { 2550 checkoutConfig: { 2551 ...globalConfig, 2552 amount: { 2553 value: amount, 2554 currency: googlePayUtils_currency 2555 } 2556 }, 2557 googlePayConfig: { 2558 type: paymentMethodConstants/* PAYMENT_METHODS */.LM.GOOGLE_PAY, 2559 showPayButton: false, 2560 buttonType: "pay", 2561 onAuthorized, 2562 onSubmit, 2563 onError, 2564 ...googlePayMethod 2565 } 2566 }; 2567}; 2568 2569;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/digitalWalletPayments/useGooglePay.ts 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581const useGooglePay = ()=>{ 2582 const dispatch = (0,hooks/* useAppDispatch */.T)(); 2583 const hiddenContainerRef = (0,react.useRef)(null); 2584 const googlePayInstanceRef = (0,react.useRef)(null); 2585 const checkoutRef = (0,react.useRef)(null); 2586 const lastMountedAmountRef = (0,react.useRef)(null); 2587 const cart = (0,hooks/* useAppSelector */.C)(cartSlice/* cartSliceSelector */.Ew); 2588 const { globalConfig } = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectOnePageCheckoutPaymentSelector */.n$); 2589 const { paymentMethodsResponse } = globalConfig; 2590 const amount = (0,hooks/* useAppSelector */.C)(cartSlice/* selectOPCPaymentAmount */.ZJ); 2591 const { push } = (0,next_router.useRouter)(); 2592 const isMobileWebview = (0,hooks/* useAppSelector */.C)(uiStateSlice/* isMobileViewFromQueryParamOrCookieSelector */.$k); 2593 const { mandatoryChecksBeforeSubmitOrder } = useSubmitCardOrder(); 2594 const mountGooglePay = (0,react.useCallback)(async ()=>{ 2595 // Google Pay is not shown in native app webview 2596 if (isMobileWebview) return; 2597 dispatch((0,onePageCheckoutPaymentSlice/* setIsGooglePayReady */.Eg)(false)); 2598 try { 2599 var _googlePayInstanceRef_current; 2600 (_googlePayInstanceRef_current = googlePayInstanceRef.current) === null || _googlePayInstanceRef_current === void 0 ? void 0 : _googlePayInstanceRef_current.unmount(); 2601 } catch (e) {} 2602 googlePayInstanceRef.current = null; 2603 checkoutRef.current = null; 2604 const googlePayMethod = paymentMethodsResponse.paymentMethods.find((m)=>m.type === paymentMethodConstants/* PAYMENT_METHODS */.LM.GOOGLE_PAY); 2605 const { checkoutConfig, googlePayConfig } = getGooglePayConfig(globalConfig, amount, dispatch, cart, push, googlePayMethod, mandatoryChecksBeforeSubmitOrder); 2606 checkoutRef.current = await (0,AdyenCheckout/* AdyenCheckout */.w)(checkoutConfig); 2607 const instance = new GooglePay/* default */.Z(checkoutRef.current, googlePayConfig); 2608 try { 2609 await instance.isAvailable(); 2610 } catch (e) { 2611 // Device/browser does not support Google Pay â button stays disabled 2612 return; 2613 } 2614 // Mount into a self-managed hidden container so the SDK can complete 2615 // initialization and handle payment callbacks, without coupling the 2616 // mount target to any specific layout component. 2617 if (!hiddenContainerRef.current) { 2618 const container = document.createElement("div"); 2619 container.style.display = "none"; 2620 document.body.appendChild(container); 2621 hiddenContainerRef.current = container; 2622 } 2623 instance.mount(hiddenContainerRef.current); 2624 googlePayInstanceRef.current = instance; 2625 lastMountedAmountRef.current = amount; 2626 dispatch((0,onePageCheckoutPaymentSlice/* setIsGooglePayReady */.Eg)(true)); 2627 }, [ 2628 amount, 2629 cart, 2630 dispatch, 2631 globalConfig, 2632 isMobileWebview, 2633 mandatoryChecksBeforeSubmitOrder, 2634 paymentMethodsResponse.paymentMethods, 2635 push 2636 ]); 2637 const submitGooglePay = (0,react.useCallback)(()=>{ 2638 try { 2639 var _googlePayInstanceRef_current; 2640 (_googlePayInstanceRef_current = googlePayInstanceRef.current) === null || _googlePayInstanceRef_current === void 0 ? void 0 : _googlePayInstanceRef_current.submit(); 2641 } catch (e) {} 2642 }, []); 2643 (0,react.useEffect)(()=>{ 2644 if (!paymentMethodsResponse.paymentMethods.length) return; 2645 if (!globalConfig.clientKey) return; 2646 if (lastMountedAmountRef.current === amount) return; 2647 mountGooglePay().catch(()=>{ 2648 dispatch((0,onePageCheckoutPaymentSlice/* setPaymentState */.Je)(paymentSlice/* PaymentState */.Ky.ERROR)); 2649 }); 2650 }, [ 2651 amount, 2652 dispatch, 2653 globalConfig.clientKey, 2654 mountGooglePay, 2655 paymentMethodsResponse.paymentMethods.length 2656 ]); 2657 (0,react.useEffect)(()=>{ 2658 if (!lastMountedAmountRef.current) return; 2659 if (lastMountedAmountRef.current === amount) return; 2660 mountGooglePay().catch(()=>{ 2661 dispatch((0,onePageCheckoutPaymentSlice/* setPaymentState */.Je)(paymentSlice/* PaymentState */.Ky.ERROR)); 2662 }); 2663 }, [ 2664 amount, 2665 dispatch, 2666 mountGooglePay 2667 ]); 2668 (0,react.useEffect)(()=>{ 2669 return ()=>{ 2670 try { 2671 var _googlePayInstanceRef_current; 2672 (_googlePayInstanceRef_current = googlePayInstanceRef.current) === null || _googlePayInstanceRef_current === void 0 ? void 0 : _googlePayInstanceRef_current.unmount(); 2673 } catch (e) {} 2674 googlePayInstanceRef.current = null; 2675 checkoutRef.current = null; 2676 if (hiddenContainerRef.current) { 2677 document.body.removeChild(hiddenContainerRef.current); 2678 hiddenContainerRef.current = null; 2679 } 2680 }; 2681 }, []); 2682 return { 2683 submitGooglePay 2684 }; 2685}; 2686 2687;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/digitalWalletPayments/useIsApplePayBtnDisable.ts 2688 2689 2690 2691const useIsApplePayBtnDisabled = ()=>{ 2692 const { isPaymentDisabled } = useIsPaymentDisabled(); 2693 const { isApplePayReady } = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectOnePageCheckoutPaymentSelector */.n$); 2694 const isApplePayBtnDisabled = isPaymentDisabled || !isApplePayReady; 2695 return { 2696 isApplePayBtnDisabled 2697 }; 2698}; 2699 2700;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/digitalWalletPayments/useIsGooglePayBtnDisabled.ts 2701 2702 2703 2704const useIsGooglePayBtnDisabled = ()=>{ 2705 const { isPaymentDisabled } = useIsPaymentDisabled(); 2706 const { isGooglePayReady } = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectOnePageCheckoutPaymentSelector */.n$); 2707 const isGooglePayBtnDisabled = isPaymentDisabled || !isGooglePayReady; 2708 return { 2709 isGooglePayBtnDisabled 2710 }; 2711}; 2712 2713;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/digitalWalletPayments/useIsPaypalBtnDisabled.ts 2714 2715 2716 2717const useIsPaypalBtnDisabled = ()=>{ 2718 const { isPaymentDisabled } = useIsPaymentDisabled(); 2719 const { isPaypalReady } = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectOnePageCheckoutPaymentSelector */.n$); 2720 const isPaypalBtnDisabled = isPaymentDisabled || !isPaypalReady; 2721 return { 2722 isPaypalBtnDisabled 2723 }; 2724}; 2725 2726// EXTERNAL MODULE: ./node_modules/@adyen/adyen-web/dist/es/components/PayPal/Pay
2726pal.js + 10 modules 2727var Paypal = __webpack_require__(291011); 2728// EXTERNAL MODULE: ./node_modules/@mui/system/esm/useMediaQuery/useMediaQuery.js 2729var useMediaQuery = __webpack_require__(261730); 2730;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/digitalWalletPayments/utils/paypalUtils.ts 2731 2732 2733 2734 2735 2736 2737 2738 2739const { currency: paypalUtils_currency } = locale.CURRENT_LOCALE; 2740const paypalUtils_handleServerResponse = (res, actions, dispatch, push, explicitRemountPaypal)=>{ 2741 if (res.action) { 2742 const parsed = JSON.parse(res.action); 2743 if (parsed.action) { 2744 actions.resolve({ 2745 action: parsed.action 2746 }); 2747 return; 2748 } 2749 } 2750 if (paymentContants/* Order_Accepted_Order_States */.Xv.includes(res.orderstate)) { 2751 actions.resolve({ 2752 resultCode: res.orderstate 2753 }); 2754 dispatch((0,orderSubmit_slice/* setOrderSubmitResponse */.VN)(res)); 2755 push(paymentContants/* Confirmation_Page_Route */.cD); 2756 } else { 2757 explicitRemountPaypal(); 2758 actions.reject(); 2759 } 2760}; 2761const createPayPalHandlers = (dispatch, cart, push, explicitRemountPaypal, mandatoryChecksBeforeSubmitOrder)=>{ 2762 const onAdditionalDetails = async (state, _component, actions)=>{ 2763 try { 2764 var _cart_driverTip, _cart_paymentAuth; 2765 const payload = { 2766 paymentData: JSON.stringify(state.data), 2767 tipReceived: (_cart_driverTip = cart === null || cart === void 0 ? void 0 : cart.driverTip) !== null && _cart_driverTip !== void 0 ? _cart_driverTip : 0, 2768 paymentAuth: (_cart_paymentAuth = cart === null || cart === void 0 ? void 0 : cart.paymentAuth) !== null && _cart_paymentAuth !== void 0 ? _cart_paymentAuth : "" 2769 }; 2770 const response = await (0,checkoutApi/* submitAdditionalDetails */.b6)(payload); 2771 paypalUtils_handleServerResponse(response.data, actions, dispatch, push, explicitRemountPaypal); 2772 } catch (e) { 2773 actions.reject(); 2774 explicitRemountPaypal(); 2775 dispatch((0,onePageCheckoutPaymentSlice/* setPaymentState */.Je)(constants/* PaymentState */.K.ERROR)); 2776 } 2777 }; 2778 const onError = (err)=>{ 2779 explicitRemountPaypal(); 2780 if (err.name === paymentContants/* Paypal_Error_Name_Cancel */.JG) return; 2781 dispatch((0,onePageCheckoutPaymentSlice/* setPaymentState */.Je)(constants/* PaymentState */.K.ERROR)); 2782 }; 2783 const onSubmit = async (state, _component, actions)=>{ 2784 try { 2785 await mandatoryChecksBeforeSubmitOrder(false); 2786 var _cart_paymentAuth; 2787 const { adyenOrderResponse } = await handleGiftCardPreAuth((_cart_paymentAuth = cart === null || cart === void 0 ? void 0 : cart.paymentAuth) !== null && _cart_paymentAuth !== void 0 ? _cart_paymentAuth : ""); 2788 const paymentData = { 2789 ...state.data, 2790 ...(adyenOrderResponse === null || adyenOrderResponse === void 0 ? void 0 : adyenOrderResponse.orderData) && { 2791 order: adyenOrderResponse 2792 } 2793 }; 2794 var _cart_driverTip, _cart_paymentAuth1; 2795 const payload = { 2796 paymentData: JSON.stringify(paymentData), 2797 tipReceived: (_cart_driverTip = cart === null || cart === void 0 ? void 0 : cart.driverTip) !== null && _cart_driverTip !== void 0 ? _cart_driverTip : 0, 2798 paymentAuth: (_cart_paymentAuth1 = cart === null || cart === void 0 ? void 0 : cart.paymentAuth) !== null && _cart_paymentAuth1 !== void 0 ? _cart_paymentAuth1 : "" 2799 }; 2800 const response = await (0,checkoutApi/* submitOrder */.pm)(payload); 2801 paypalUtils_handleServerResponse(response.data, actions, dispatch, push, explicitRemountPaypal); 2802 } catch (e) { 2803 actions.reject(); 2804 explicitRemountPaypal(); 2805 dispatch((0,onePageCheckoutPaymentSlice/* setPaymentState */.Je)(constants/* PaymentState */.K.ERROR)); 2806 events/* default */.Z.emit(events/* OrderEventType */.v.ORDER_SUBMIT_FAILED); 2807 } 2808 }; 2809 const onInit = ()=>
2809dispatch((0,onePageCheckoutPaymentSlice/* setIsPaypalReady */.D$)(true)); 2810 return { 2811 onAdditionalDetails, 2812 onError, 2813 onSubmit, 2814 onInit 2815 }; 2816}; 2817const getPayPalConfig = (globalConfig, amount, dispatch, cart, push, paypalMethod, explicitRemountPaypal, mandatoryChecksBeforeSubmitOrder)=>{ 2818 const { onAdditionalDetails, onError, onSubmit, onInit } = createPayPalHandlers(dispatch, cart, push, explicitRemountPaypal, mandatoryChecksBeforeSubmitOrder); 2819 return { 2820 checkoutConfig: { 2821 ...globalConfig, 2822 amount: { 2823 value: amount, 2824 currency: paypalUtils_currency 2825 }, 2826 onAdditionalDetails 2827 }, 2828 paypalConfig: { 2829 style: paymentContants/* Paypal_Config_Style */.pI, 2830 showPayButton: true, 2831 blockPayPalPayLaterButton: true, 2832 blockPayPalVenmoButton: true, 2833 onSubmit, 2834 onError, 2835 onInit, 2836 ...paypalMethod 2837 } 2838 }; 2839}; 2840 2841;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/digitalWalletPayments/usePaypal.ts 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853const usePaypal = ()=>{ 2854 const dispatch = (0,hooks/* useAppDispatch */.T)(); 2855 const activeContainerRef = (0,react.useRef)(null); 2856 const paypalInstanceRef = (0,react.useRef)(null); 2857 const lastMountedAmountRef = (0,react.useRef)(null); 2858 const paypalDesktopRef = (0,react.useRef)(null); 2859 const paypalMobileFirstRowRef = (0,react.useRef)(null); 2860 const paypalMobileSecondRowRef = (0,react.useRef)(null); 2861 const cart = (0,hooks/* useAppSelector */.C)(cartSlice/* cartSliceSelector */.Ew); 2862 const { globalConfig, isApplePayAvailable } = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectOnePageCheckoutPaymentSelector */.n$); 2863 const { paymentMethodsResponse } = globalConfig; 2864 const amount = (0,hooks/* useAppSelector */.C)(cartSlice/* selectOPCPaymentAmount */.ZJ); 2865 const { push } = (0,next_router.useRouter)(); 2866 const isMobile = (0,useMediaQuery/* default */.Z)("(max-width: 64rem)"); 2867 const { mandatoryChecksBeforeSubmitOrder } = useSubmitCardOrder(); 2868 const getActivePaypalRef = (0,react.useCallback)(()=>{ 2869 if (!isMobile) { 2870 return paypalDesktopRef; 2871 } 2872 if (isApplePayAvailable) { 2873 return paypalMobileSecondRowRef; 2874 } 2875 return paypalMobileFirstRowRef; 2876 }, [ 2877 isApplePayAvailable, 2878 isMobile 2879 ]); 2880 const mountPayPal = (0,react.useCallback)(async ()=>{ 2881 dispatch((0,onePageCheckoutPaymentSlice/* setIsPaypalReady */.D$)(false)); 2882 try { 2883 var _paypalInstanceRef_current; 2884 (_paypalInstanceRef_current = paypalInstanceRef.current) === null || _paypalInstanceRef_current === void 0 ? void 0 : _paypalInstanceRef_current.unmount(); 2885 } catch (e) {} 2886 paypalInstanceRef.current = null; 2887 const paypalMethod = paymentMethodsResponse.paymentMethods.find((paymentMethod)=>paymentMethod.type === paymentMethodConstants/* PAYMENT_METHODS */.LM.PAYPAL); 2888 const explicitRemountPaypal = ()=>{ 2889 lastMountedAmountRef.current = null; 2890 mountPayPal(); 2891 }; 2892 const { checkoutConfig, paypalConfig } = getPayPalConfig(globalConfig, amount, dispatch, cart, push, paypalMethod, explicitRemountPaypal, mandatoryChecksBeforeSubmitOrder); 2893 const adyenCheckout = await (0,AdyenCheckout/* AdyenCheckout */.w)(checkoutConfig); 2894 const instance = new Paypal/* default */.Z(adyenCheckout, paypalConfig); 2895 if (!activeContainerRef.current) { 2896 const activeRef = getActivePaypalRef(); 2897 activeContainerRef.current = activeRef.current; 2898 } 2899 if (activeContainerRef.current) { 2900 instance.mount(activeContainerRef.current); 2901 } 2902 paypalInstanceRef.current = instance; 2903 lastMountedAmountRef.current = amount; 2904 }, [ 2905 dispatch, 2906 paymentMethodsResponse.paymentMethods, 2907 globalConfig, 2908 amount, 2909 cart, 2910 push, 2911 mandatoryChecksBeforeSubmitOrder, 2912 getActivePaypalRef 2913 ]); 2914 const mountPaypalTo = (0,react.useCallback)((container)=>{ 2915 if (!container || !paypalInstanceRef.current) { 2916 return; 2917 } 2918 activeContainerRef.current = container; 2919 try { 2920 paypalInstanceRef.current.unmount(); 2921 } catch (e) {} 2922 paypalInstanceRef.current.mount(container); 2923 }, []); 2924 (0,react.useEffect)(function syncActivePaypalContainer() { 2925 const activeRef = getActivePaypalRef(); 2926 mountPaypalTo(activeRef.current); 2927 }, [ 2928 getActivePaypalRef, 2929 mountPaypalTo 2930 ]); 2931 (0,react.useEffect)(function initializePaypal() { 2932 if (!paymentMethodsResponse.paymentMethods.length) return; 2933 if (!globalConfig.clientKey) return; 2934 if (lastMountedAmountRef.current === amount) return; 2935 mountPayPal().catch(()=>{ 2936 dispatch((0,onePageCheckoutPaymentSlice/* setPaymentState */.Je)(paymentSlice/* PaymentState */.Ky.ERROR)); 2937 }); 2938 }, [ 2939 amount, 2940 dispatch, 2941 globalConfig.clientKey, 2942 mountPayPal, 2943 paymentMethodsResponse.paymentMethods.length 2944 ]); 2945 (0,react.useEffect)(function remountPaypalOnAmountChange() { 2946 if (!lastMountedAmountRef.current) return; 2947 if (lastMountedAmountRef.current === amount) return; 2948 mountPayPal().catch(()=>{ 2949 dispatch((0,onePageCheckoutPaymentSlice/* setPaymentState */.Je)(paymentSlice/* PaymentState */.Ky.ERROR)); 2950 }); 2951 }, [ 2952 amount, 2953 dispatch, 2954 mountPayPal 2955 ]); 2956 (0,react.useEffect)(function cleanupPaypalOnUnmount() { 2957 return ()=>{ 2958 try { 2959 var _paypalInstanceRef_current;
2960 (_paypalInstanceRef_current = paypalInstanceRef.current) === null || _paypalInstanceRef_current === void 0 ? void 0 : _paypalInstanceRef_current.unmount(); 2961 } catch (e) {} 2962 paypalInstanceRef.current = null; 2963 }; 2964 }, []); 2965 return { 2966 paypalDesktopRef, 2967 paypalMobileFirstRowRef, 2968 paypalMobileSecondRowRef 2969 }; 2970}; 2971 2972;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/digitalWalletPayments/useDigitalWalletPayments.ts 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982const useDigitalWalletPayments = ()=>{ 2983 const { submitApplePay } = useApplePay(); 2984 const { submitGooglePay } = useGooglePay(); 2985 const { paypalDesktopRef, paypalMobileFirstRowRef, paypalMobileSecondRowRef } = usePaypal(); 2986 const { isLoggedIn } = (0,lib_hooks/* useCustomer */.ON)(); 2987 const { isApplePayAvailable, isGuestFormSubmitted } = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectOnePageCheckoutPaymentSelector */.n$); 2988 const shouldShowPaymentSection = isLoggedIn || isGuestFormSubmitted; 2989 const { isGooglePayBtnDisabled } = useIsGooglePayBtnDisabled(); 2990 const { isPaypalBtnDisabled } = useIsPaypalBtnDisabled(); 2991 const { isApplePayBtnDisabled } = useIsApplePayBtnDisabled(); 2992 return { 2993 submitApplePay, 2994 submitGooglePay, 2995 paypalDesktopRef, 2996 paypalMobileFirstRowRef, 2997 paypalMobileSecondRowRef, 2998 isApplePayAvailable, 2999 shouldShowPaymentSection, 3000 isGooglePayBtnDisabled, 3001 isPaypalBtnDisabled, 3002 isApplePayBtnDisabled 3003 }; 3004}; 3005 3006;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/digitalWalletPayments/index.ts 3007 3008 3009;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/discountCode/useDiscountCode.tsx 3010 3011 3012 3013 3014const useDiscountCode = ()=>{ 3015 const [couponFieldValue, setCouponFieldValue] = (0,react.useState)(""); 3016 const [isLoading, setIsLoading] = (0,react.useState)(false); 3017 const dispatch = (0,hooks/* useAppDispatch */.T)(); 3018 const appliedDiscount = (0,hooks/* useAppSelector */.C)((state)=>state.cart.discount); 3019 const errorCodeTranslation = { 3020 WF_CART_008: (0,utils_locale.t)("checkout.payment.tax_calculation_error_message"), 3021 WF_CART_009: (0,utils_locale.t)("checkout.payment.payment_discount_error_message"), 3022 WF_CART_010: (0,utils_locale.t)("checkout.payment.generic_cart_error"), 3023 WF_CART_029: (0,utils_locale.t)("checkout.payment.payment_discount_no_longer_valid_error_message"), 3024 WF_CART_031: (0,utils_locale.t)("checkout.payment.payment_discount_not_valid_on_this_order_error_message") 3025 }; 3026 const handleApply = async ()=>{ 3027 setIsLoading(true); 3028 await dispatch((0,cartSlice/* applyDiscountCode */.iY)({ 3029 discountCode: couponFieldValue, 3030 errorCodeTranslation 3031 })); 3032 setIsLoading(false); 3033 }; 3034 const handleRemove = async ()=>{ 3035 setIsLoading(true); 3036 setCouponFieldValue(""); 3037 await dispatch((0,cartSlice/* removeDiscountCode */.vK)({ 3038 discountCode: appliedDiscount === null || appliedDiscount === void 0 ? void 0 : appliedDiscount.code, 3039 errorCodeTranslation 3040 })); 3041 setIsLoading(false); 3042 }; 3043 const handleCouponFieldChange = (value)=>{ 3044 dispatch((0,cartSlice/* resetDiscountCode */.Lg)()); 3045 setCouponFieldValue(value); 3046 }; 3047 return { 3048 isLoading, 3049 handleApply, 3050 handleRemove, 3051 handleCouponFieldChange, 3052 couponFieldValue, 3053 appliedDiscount 3054 }; 3055}; 3056 3057;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/discountCode/index.ts 3058 3059 3060// EXTERNAL MODULE: ./node_modules/@adyen/adyen-web/dist/es/components/Giftcard/Giftcard.js + 6 modules 3061var Giftcard = __webpack_require__(304835); 3062// EXTERNAL MODULE: ./src/api/paymentApi.ts 3063var paymentApi = __webpack_require__(677674); 3064// EXTERNAL MODULE: ./src/components/checkout/payment/adyen/GiftCardForm/giftcard.utils.ts 3065var giftcard_utils = __webpack_require__(981496); 3066// EXTERNAL MODULE: ./src/lib/constants/snackbar.ts 3067var snackbar = __webpack_require__(380254); 3068// EXTERNAL MODULE: ./src/lib/types/payment.types.ts 3069var payment_types = __webpack_require__(108204); 3070// EXTERNAL MODULE: ./src/lib/utils/snackbarHandlers.ts 3071var snackbarHandlers = __webpack_require__(921134); 3072;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/giftCard/useGiftCard.ts 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087const GIFT_CARD_NAME = "Gift Card"; 3088const GIFT_CARD_BRAND = "givex"; 3089const useGiftCard = ()=>{ 3090 const [errorMessages, setErrorMessages] = (0,react.useState)([]); 3091 const [loading, setLoading] = (0,react.useState)(false); 3092 const [isGiftCardVisible, setIsGiftCardVisible] = (0,react.useState)(false); 3093 const giftCardDivRef = (0,react.useRef)(null); 3094 const giftCardComponentRef = (0,react.useRef)(null); 3095 const checkoutRef = (0,react.useRef)(null); 3096 const isInitialized = (0,react.useRef)(false); 3097 const balanceRef = (0,react.useRef)(0); 3098 const dispatch = (0,hooks/* useAppDispatch */.T)(); 3099 const cart = (0,hooks/* useAppSelector */.C)((state)=>state.cart); 3100 const authAmountWithTip = (0,hooks/* useAppSelector */.C)(cartSlice/* selectAuthAmountWithTipAdjustment */.eo); 3101 const { globalConfig } = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectOnePageCheckoutPaymentSelector */.n$); 3102 const { paymentMethodsResponse } = globalConfig;
3103 const { appliedAmount, remainingAmount, remainingPaymentDue, checkedAuthAmount, state: giftCardState, isGiftCardApplied } = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectOPCGiftCardDetails */.gH); 3104 const resetFormState = (0,react.useCallback)(()=>{ 3105 var _giftCardComponentRef_current; 3106 dispatch((0,onePageCheckoutPaymentSlice/* resetOPCGiftCardDetails */.Dg)()); 3107 setErrorMessages([]); 3108 setLoading(false); 3109 (_giftCardComponentRef_current = giftCardComponentRef.current) === null || _giftCardComponentRef_current === void 0 ? void 0 : _giftCardComponentRef_current.update({}); 3110 }, [ 3111 dispatch 3112 ]); 3113 const handleRemoveGiftCard = (0,react.useCallback)(async ()=>{ 3114 if (loading) return; 3115 try { 3116 setLoading(true); 3117 await (0,paymentApi/* deletePaymentFromCart */.Y$)({ 3118 paymentMethodType: payment_types/* DeletePaymentMethodType */.z.GIFT_CARD 3119 }); 3120 resetFormState(); 3121 } catch (error) { 3122 (0,snackbarHandlers/* axiosErrorHandler */.ri)({ 3123 error, 3124 dispatch, 3125 fallbackSnackbar: { 3126 heading: snackbar/* GENERIC_EVENT_ERR_HEADING */.U3.REQUEST_FAILED(), 3127 message: snackbar/* GENERIC_ERR_MSG */.I_.ERROR() 3128 } 3129 }); 3130 setLoading(false); 3131 } 3132 }, [ 3133 dispatch, 3134 loading, 3135 resetFormState 3136 ]); 3137 const handleBalanceCheck = (0,react.useCallback)(async (resolve, _reject, data)=>{ 3138 try { 3139 var _giftCardComponentRef_current_props_amount, _giftCardComponentRef_current_props, _giftCardComponentRef_current; 3140 setErrorMessages([]); 3141 setLoading(true); 3142 dispatch((0,onePageCheckoutPaymentSlice/* resetOPCGiftCardDetails */.Dg)()); 3143 var _giftCardComponentRef_current_props_amount_value; 3144 const currentAmount = (_giftCardComponentRef_current_props_amount_value = (_giftCardComponentRef_current = giftCardComponentRef.current) === null || _giftCardComponentRef_current === void 0 ? void 0 : (_giftCardComponentRef_current_props = _giftCardComponentRef_current.props) === null || _giftCardComponentRef_current_props === void 0 ? void 0 : (_giftCardComponentRef_current_props_amount = _giftCardComponentRef_current_props.amount) === null || _giftCardComponentRef_current_props_amount === void 0 ? void 0 : _giftCardComponentRef_current_props_amount.value) !== null && _giftCardComponentRef_current_props_amount_value !== void 0 ? _giftCardComponentRef_current_props_amount_value : 0; 3145 const payload = { 3146 paymentMethod: data.paymentMethod, 3147 amount: { 3148 currency: locale.CURRENT_LOCALE.currency, 3149 value: currentAmount 3150 } 3151 }; 3152 const { data: balanceResponse } = await (0,paymentApi/* checkGiftCardBalance */.Mh)(payload); 3153 dispatch((0,onePageCheckoutPaymentSlice/* setOPCGiftCardDetails */.PZ)({ 3154 balance: balanceResponse.balance.value, 3155 checkedAuthAmount: currentAmount 3156 })); 3157 balanceRef.current = balanceResponse.balance.value; 3158 resolve(balanceResponse); 3159 if (balanceResponse.resultCode === adyen_giftcard_types/* BalanceResultCode */.V.NOT_ENOUGH_BALANCE) { 3160 setLoading(false); 3161 } 3162 } catch (error) { 3163 setErrorMessages((0,giftcard_utils/* handleGiftCardErrors */.le)(error)); 3164 setLoading(false); 3165 } 3166 }, [ 3167 dispatch 3168 ]); 3169 const handleOrderRequest = (0,react.useCallback)(async (_resolve, _reject, data)=>{ 3170 try { 3171 var _giftCardComponentRef_current_props_amount, _giftCardComponentRef_current_props, _giftCardComponentRef_current; 3172 var _giftCardComponentRef_current_props_amount_value; 3173 const orderResponse = await (0,paymentApi/* createAdyenOrder */.sm)({ 3174 cartId: cart.id, 3175 amount: (_giftCardComponentRef_current_props_amount_value = (_giftCardComponentRef_current = giftCardComponentRef.current) === null || _giftCardComponentRef_current === void 0 ? void 0 : (_giftCardComponentRef_current_props = _giftCardComponentRef_current.props) === null || _giftCardComponentRef_current_props === void 0 ? void 0 : (_giftCardComponentRef_current_props_amount = _giftCardComponentRef_current_props.amount) === null || _giftCardComponentRef_current_props_amount === void 0 ? void 0 : _giftCardComponentRef_current_props_amount.value) !== null && _giftCardComponentRef_current_props_amount_value !== void 0 ? _giftCardComponentRef_current_props_amount_value : 0, 3176 amountPaidByGC: balanceRef.current 3177 }); 3178 var _orderResponse_data; 3179 const { pspReference, orderData } = (_orderResponse_data = orderResponse.data) !== null && _orderResponse_data !== void 0 ? _orderResponse_data : {}; 3180 dispatch((0,onePageCheckoutPaymentSlice/* setOPCGiftCardDetail
3180s */.PZ)({ 3181 state: adyen_giftcard_types/* GiftCardState */.s.INSUFFICIENT, 3182 encryptedData: data, 3183 ...orderData && { 3184 adyenOrderResponse: { 3185 pspReference, 3186 orderData 3187 } 3188 } 3189 })); 3190 } catch (error) { 3191 resetFormState(); 3192 setErrorMessages((0,giftcard_utils/* handleGiftCardErrors */.le)(error)); 3193 } finally{ 3194 setLoading(false); 3195 } 3196 }, [ 3197 dispatch, 3198 cart.id, 3199 resetFormState 3200 ]); 3201 const handleRequiringConfirmation = (0,react.useCallback)(async ()=>{ 3202 var _giftCardComponentRef_current; 3203 dispatch((0,onePageCheckoutPaymentSlice/* setOPCGiftCardDetails */.PZ)({ 3204 state: adyen_giftcard_types/* GiftCardState */.s.SUFFICIENT, 3205 encryptedData: (_giftCardComponentRef_current = giftCardComponentRef.current) === null || _giftCardComponentRef_current === void 0 ? void 0 : _giftCardComponentRef_current.data 3206 })); 3207 setLoading(false); 3208 }, [ 3209 dispatch 3210 ]); 3211 const unmountGiftCard = (0,react.useCallback)(()=>{ 3212 try { 3213 var _giftCardComponentRef_current; 3214 (_giftCardComponentRef_current = giftCardComponentRef.current) === null || _giftCardComponentRef_current === void 0 ? void 0 : _giftCardComponentRef_current.unmount(); 3215 } catch (e) { 3216 // Adyen may throw if component is already unmounted 3217 } 3218 giftCardComponentRef.current = null; 3219 checkoutRef.current = null; 3220 }, []); 3221 const mountGiftCard = (0,react.useCallback)(async ()=>{ 3222 unmountGiftCard(); 3223 checkoutRef.current = await (0,AdyenCheckout/* AdyenCheckout */.w)({ 3224 ...globalConfig, 3225 amount: { 3226 value: authAmountWithTip, 3227 currency: locale.CURRENT_LOCALE.currency 3228 } 3229 }); 3230 const giftcard = new Giftcard/* GiftcardElement */.b(checkoutRef.current, { 3231 name: GIFT_CARD_NAME, 3232 brand: GIFT_CARD_BRAND, 3233 showPayButton: false, 3234 onBalanceCheck: handleBalanceCheck, 3235 onOrderRequest: handleOrderRequest, 3236 onRequiringConfirmation: handleRequiringConfirmation 3237 }); 3238 giftCardComponentRef.current = giftcard; 3239 giftCardDivRef.current && giftcard.mount(giftCardDivRef.current); 3240 }, [ 3241 globalConfig, 3242 authAmountWithTip, 3243 unmountGiftCard, 3244 handleBalanceCheck, 3245 handleOrderRequest, 3246 handleRequiringConfirmation 3247 ]); 3248 const { isLoggedIn } = (0,lib_hooks/* useCustomer */.ON)(); 3249 const { isGuestFormSubmitted } = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectOnePageCheckoutPaymentSelector */.n$); 3250 const shouldShowPaymentSection = isLoggedIn || isGuestFormSubmitted; 3251 // Initialize Adyen once payment methods and auth amount are available 3252 (0,react.useEffect)(()=>{ 3253 var _paymentMethodsResponse_paymentMethods; 3254 if (!isInitialized.current && (paymentMethodsResponse === null || paymentMethodsResponse === void 0 ? void 0 : (_paymentMethodsResponse_paymentMethods = paymentMethodsResponse.paymentMethods) === null || _paymentMethodsResponse_paymentMethods === void 0 ? void 0 : _paymentMethodsResponse_paymentMethods.length) > 0 && authAmountWithTip && shouldShowPaymentSection && isGiftCardVisible) { 3255 isInitialized.current = true; 3256 void mountGiftCard(); 3257 } 3258 }, [ 3259 mountGiftCard, 3260 authAmountWithTip, 3261 paymentMethodsResponse, 3262 shouldShowPaymentSection, 3263 isGiftCardVisible 3264 ]); 3265 // Re-mount when auth amount changes after a balance was already checked 3266 (0,react.useEffect)(()=>{ 3267 if (isInitialized.current && checkedAuthAmount > 0 && authAmountWithTip !== checkedAuthAmount && giftCardState !== adyen_giftcard_types/* GiftCardState */.s.IDLE && shouldShowPaymentSection) { 3268 resetFormState(); 3269 mountGiftCard(); 3270 } 3271 }, [ 3272 authAmountWithTip, 3273 checkedAuthAmount, 3274 resetFormState, 3275 giftCardState, 3276 mountGiftCard, 3277 shouldShowPaymentSection, 3278 isGiftCardVisible 3279 ]); 3280 // Re-check balance on order submit failure 3281 (0,react.useEffect)(()=>{ 3282 if (!isGiftCardApplied) return; 3283 const handleOrderSubmitFailed = ()=>{ 3284 var _giftCardComponentRef_current; 3285 (_giftCardComponentRef_current = giftCardComponentRef.current) === null || _giftCardComponentRef_current === void 0 ? void 0 : _giftCardComponentRef_current.onBalanceCheck(); 3286 }; 3287 events/* default */.Z.on(events/* OrderEventType */.v.ORDER_SUBMIT_FAILED, handleOrderSubmitFailed); 3288 return ()=>{ 3289 events/* default */.Z.off(events/* OrderEventType */.v.ORDER_SUBMIT_FAILED, handleOrderSubmitFailed); 3290 }; 3291 }, [ 3292 isGiftCardApplied 3293 ]); 3294 // Cleanup on unmount 3295 (0,react.useEffect)(()=>unmountGiftCard, [ 3296 unmountGiftCard 3297 ]); 3298 return { 3299 giftCardDivRef, 3300 giftCardComponentRef, 3301 errorMessages, 3302 loading, 3303 appliedAmount,
3304 remainingAmount, 3305 remainingPaymentDue, 3306 giftCardState, 3307 isGiftCardApplied, 3308 authAmountWithTip, 3309 resetFormState, 3310 handleRemoveGiftCard, 3311 setIsGiftCardVisible 3312 }; 3313}; 3314 3315;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/giftCard/index.ts 3316 3317 3318;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/usePaymentIntegration.tsx 3319 3320 3321 3322 3323 3324 3325const usePaymentIntegration = ()=>{ 3326 const cart = (0,hooks/* useAppSelector */.C)(cartSlice/* cartSliceSelector */.Ew); 3327 const dispatch = (0,hooks/* useAppDispatch */.T)(); 3328 const isFetchingPaymentMethodsRef = (0,react.useRef)(false); 3329 const amount = (0,hooks/* useAppSelector */.C)(cartSlice/* selectOPCPaymentAmount */.ZJ); 3330 const { globalConfig } = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectOnePageCheckoutPaymentSelector */.n$); 3331 const { paymentMethodsResponse } = globalConfig; 3332 (0,react.useEffect)(function useFetchPaymentMethodsEffect() { 3333 if (amount <= 0 || isFetchingPaymentMethodsRef.current) { 3334 return; 3335 } 3336 isFetchingPaymentMethodsRef.current = true; 3337 dispatch((0,onePageCheckoutPaymentSlice/* getPaymentMethods */.Q8)(locale.CURRENCY_CODE, locale.CURRENT_COUNTRY_SHORT_CODE, amount, utils_locale/* LANGUAGE */.ad)).finally(()=>{ 3338 isFetchingPaymentMethodsRef.current = false; 3339 }); 3340 }, [ 3341 dispatch, 3342 amount, 3343 cart.cartId 3344 ]); 3345 (0,react.useEffect)(function useSyncGlobalConfigEffect() { 3346 var _paymentMethodsResponse_paymentMethods; 3347 var _paymentMethodsResponse_paymentMethods_length; 3348 if (((_paymentMethodsResponse_paymentMethods_length = paymentMethodsResponse === null || paymentMethodsResponse === void 0 ? void 0 : (_paymentMethodsResponse_paymentMethods = paymentMethodsResponse.paymentMethods) === null || _paymentMethodsResponse_paymentMethods === void 0 ? void 0 : _paymentMethodsResponse_paymentMethods.length) !== null && _paymentMethodsResponse_paymentMethods_length !== void 0 ? _paymentMethodsResponse_paymentMethods_length : 0) > 0) { 3349 dispatch((0,onePageCheckoutPaymentSlice/* setGlobalConfig */.Qb)({ 3350 amount: { 3351 value: amount, 3352 currency: locale.CURRENCY_CODE 3353 } 3354 })); 3355 } 3356 }, [ 3357 dispatch, 3358 amount, 3359 paymentMethodsResponse 3360 ]); 3361}; 3362 3363;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/useOpcPayment.ts 3364 3365 3366 3367 3368 3369const useOpcPayment = ()=>{ 3370 usePaymentIntegration(); 3371 const cardPayment = useCardPayment(); 3372 const digitalWalletPayments = useDigitalWalletPayments(); 3373 const giftCardPayment = useGiftCard(); 3374 const paymentDiscountCode = useDiscountCode(); 3375 return { 3376 cardPayment, 3377 digitalWalletPayments, 3378 paymentDiscountCode, 3379 giftCardPayment 3380 }; 3381}; 3382 3383;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/payment/index.ts 3384 3385 3386 3387 3388/***/ }), 3389 3390/***/ 833075: 3391/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 3392 3393"use strict"; 3394/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3395/* harmony export */ i: function() { return /* binding */ useDeliveryWindowSession; } 3396/* harmony export */ }); 3397/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(667294); 3398/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_constants_storage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(692521); 3399/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_utils_browserStorage__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(673228); 3400 3401 3402 3403const useDeliveryWindowSession = ()=>{ 3404 const getDeliveryWindowSession = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(()=>{ 3405 const existing = (0,_wildfork_commercetools_core_ui_dist_src_lib_utils_browserStorage__WEBPACK_IMPORTED_MODULE_2__.getItem)(_wildfork_commercetools_core_ui_dist_src_lib_constants_storage__WEBPACK_IMPORTED_MODULE_1__.STORAGE_KEYS.DELIVERY_WINDOW, _wildfork_commercetools_core_ui_dist_src_lib_constants_storage__WEBPACK_IMPORTED_MODULE_1__.STORAGE_TYPES.SESSION); 3406 if (!(existing === null || existing === void 0 ? void 0 : existing.length)) return {}; 3407 try { 3408 const parsed = JSON.parse(existing); 3409 return parsed && typeof parsed === "object" ? parsed : {}; 3410 } catch (e) { 3411 return {}; 3412 } 3413 }, []); 3414 const setDeliveryWindowSession = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((value)=>{ 3415 (0,_wildfork_commercetools_core_ui_dist_src_lib_utils_browserStorage__WEBPACK_IMPORTED_MODULE_2__.setItem)(_wildfork_commercetools_core_ui_dist_src_lib_constants_storage__WEBPACK_IMPORTED_MODULE_1__.STORAGE_KEYS.DELIVERY_WINDOW, JSON.stringify(value), _wildfork_commercetools_core_ui_dist_src_lib_constants_storage__WEBPACK_IMPORTED_MODULE_1__.STORAGE_TYPES.SESSION); 3416 }, []); 3417 return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({ 3418 getDeliveryWindowSession, 3419 setDeliveryWindowSession 3420 }), [ 3421 getDeliveryWindowSession, 3422 setDeliveryWindowSession 3423 ]); 3424}; 3425 3426 3427/***/ }), 3428 3429/***/ 257778: 3430/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 3431 3432"use strict"; 3433/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3434/* harmony export */ RS: function() { return /* binding */ applyStoreFulfillment; }, 3435/* harmony export */ rK: function() { return /* binding */ useStoreFulfillmentWithInventoryCheck; } 3436/* harmony export */ }); 3437/* unused harmony export runOosAndRestrictedStateCheck */ 3438/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(667294); 3439/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_constants_storage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(692521); 3440/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_utils_productUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(574909); 3441/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_utils_typeUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(681063); 3442/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(225617); 3443/* harmony import */ var _Api_cart_getCartItemApi__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(543854); 3444/* harmony import */ var _Api_customerApi__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(164535); 3445/* harmony import */ var _Components_checkout_delivery_dbDeliveryDataTransformer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(672311); 3446/* harmony import */ var _Lib_store_cartSlice__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(484725); 3447/* harmony import */ var _Lib_store_customerInfoSlice__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(680921); 3448/* harmony import */ var _Lib_store_hooks__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(267097); 3449/* harmony import */ var _Lib_store_zipcodeSlice__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(480326); 3450/* harmony import */ var _Lib_utils_browserStorage__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(873043); 3451/* harmony import */ var _Lib_utils_fulfillmentUtils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(889034); 3452/* harmony import */ var _Lib_utils_typeUtils__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(726373); 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468function getSelectedPostalCode(apiResult) { 3469 const addresses = apiResult.address; 3470 const selected = addresses === null || addresses === void 0 ? void 0 : addresses.find((a)=>a.selected === true); 3471 return selected === null || selected === void 0 ? void 0 : selected.postalCode; 3472} 3473function resolveIsMemberEligible(store) { 3474 var _store_shippingTypes; 3475 var _store_shippingTypes_filter; 3476 const shippingTypes = (_store_shippingTypes_filter = store === null || store === void 0 ? void 0 : (_store_shippingTypes = store.shippingTypes) === null || _store_shippingTypes === void 0 ? void 0 : _store_shippingTypes.filter(_Lib_utils_typeUtils__WEBPACK_IMPORTED_MODULE_14__/* .notEmpty */ .Dw)) !== null && _store_shippingTypes_filter !== void 0 ? _store_shippingTypes_filter : []; 3477 const isAir = (0,_Lib_utils_fulfillmentUtils__WEBPACK_IMPORTED_MODULE_13__/* .checkFulfillmentType */ .MQ)(_Components_checkout_delivery_dbDeliveryDataTransformer__WEBPACK_IMPORTED_MODULE_7__/* .FULFILLMENT_TYPES */ .AJ.AIR, shippingTypes); 3478 var _store_membershipEligible; 3479 const membershipEligible = (_store_membershipEligible = store === null || store === void 0 ? void 0 : store.membershipEligible) !== null && _store_membershipEligible !== void 0 ? _store_membershipEligible : false;
3480 return membershipEligible && !isAir; 3481} 3482function notifyWebViewOfZipcodeChange(zipcode, isWebViewVisitor) { 3483 if (isWebViewVisitor && window.flutter_inappwebview) { 3484 var _window_flutter_inappwebview_callHandler, _window_flutter_inappwebview; 3485 const dataToSend = { 3486 updateZip: { 3487 zip: zipcode 3488 } 3489 }; 3490 (_window_flutter_inappwebview = window.flutter_inappwebview) === null || _window_flutter_inappwebview === void 0 ? void 0 : (_window_flutter_inappwebview_callHandler = _window_flutter_inappwebview.callHandler) === null || _window_flutter_inappwebview_callHandler === void 0 ? void 0 : _window_flutter_inappwebview_callHandler.call(_window_flutter_inappwebview, "updateZip", dataToSend); 3491 } 3492} 3493async function fetchRegionCode(zipcode) { 3494 try { 3495 var _res_data; 3496 const res = await (0,_Api_customerApi__WEBPACK_IMPORTED_MODULE_6__/* .getCustomerRegion */ .Xd)(zipcode); 3497 var _res_data_regionCode; 3498 return (_res_data_regionCode = res === null || res === void 0 ? void 0 : (_res_data = res.data) === null || _res_data === void 0 ? void 0 : _res_data.regionCode) !== null && _res_data_regionCode !== void 0 ? _res_data_regionCode : ""; 3499 } catch (e) { 3500 return ""; 3501 } 3502} 3503/** @returns true if restricted items were found (caller should abort sync). */ async function fetchRestrictedItemsForState(zipcode, setRestrictedStateItems) { 3504 var _cartResponse_data; 3505 const cartResponse = await (0,_Api_cart_getCartItemApi__WEBPACK_IMPORTED_MODULE_5__/* .getCart */ .d)({ 3506 checkInventory: false, 3507 checkStateRestrictions: true, 3508 state: (0,_wildfork_commercetools_core_ui_dist_src_lib_utils_productUtils__WEBPACK_IMPORTED_MODULE_2__.getStateFromZip)(zipcode) 3509 }); 3510 const restricted = cartResponse === null || cartResponse === void 0 ? void 0 : (_cartResponse_data = cartResponse.data) === null || _cartResponse_data === void 0 ? void 0 : _cartResponse_data.restrictedStateLineItems; 3511 if (!(restricted === null || restricted === void 0 ? void 0 : restricted.length)) return false; 3512 setRestrictedStateItems([ 3513 ...restricted 3514 ]); 3515 return true; 3516} 3517function persistStoreAndTimezone(dispatch, storeId, storeTimeZone) { 3518 dispatch((0,_Lib_store_cartSlice__WEBPACK_IMPORTED_MODULE_8__/* .setStoreIdHandler */ .sW)(storeId)); 3519 dispatch((0,_Lib_store_cartSlice__WEBPACK_IMPORTED_MODULE_8__/* .setStoreTimeZone */ .JS)(storeTimeZone)); 3520 (0,_Lib_utils_browserStorage__WEBPACK_IMPORTED_MODULE_12__/* .setItem */ .LS)("localTimeZone", storeTimeZone, "local"); 3521 (0,_Lib_utils_browserStorage__WEBPACK_IMPORTED_MODULE_12__/* .setItem */ .LS)(_wildfork_commercetools_core_ui_dist_src_lib_constants_storage__WEBPACK_IMPORTED_MODULE_1__.STORAGE_KEYS.CART_FULFILLMENT_STORE_ID, storeId, _wildfork_commercetools_core_ui_dist_src_lib_constants_storage__WEBPACK_IMPORTED_MODULE_1__.STORAGE_TYPES.SESSION); 3522} 3523async function runOosAndRestrictedStateCheck(params) { 3524 const { zipcode, previousZipcode, membershipInCart, storeDetails, findOutOfStockItems, setRestrictedStateItems } = params; 3525 const checkForOosAndStateRestriction = !!zipcode && (zipcode !== previousZipcode || membershipInCart); 3526 if (!checkForOosAndStateRestriction) { 3527 return false; 3528 } 3529 const isMemberEligible = resolveIsMemberEligible(storeDetails); 3530 const outOfStockItems = await findOutOfStockItems({ 3531 storeIdProp: storeDetails === null || storeDetails === void 0 ? void 0 : storeDetails.id, 3532 isMemberEligible 3533 }); 3534 const hasRestrictedStateLineItems = await fetchRestrictedItemsForState(zipcode, setRestrictedStateItems); 3535 return !!(outOfStockItems === null || outOfStockItems === void 0 ? void 0 : outOfStockItems.length) || hasRestrictedStateLineItems; 3536} 3537async function applyStoreFulfillment(params) { 3538 var _state_zipcode, _state_cart; 3539 const { dispatch, state, zipcode, storeDetails, getInventoryList } = params; 3540 var _state_zipcode_zipcode; 3541 const prevZip = (_state_zipcode_zipcode = (_state_zipcode = state.zipcode) === null || _state_zipcode === void 0 ? void 0 : _state_zipcode.zipcode) !== null && _state_zipcode_zipcode !== void 0 ? _state_zipcode_zipcode : ""; 3542 const prevStoreId = (_state_cart = state.cart) === null || _state_cart === void 0 ? void 0 : _state_cart.storeId; 3543 var _storeDetails_id; 3544 const storeId = (_storeDetails_id = storeDetails === null || storeDetails === void 0 ? void 0 : storeDetails.id) !== null && _storeDetails_id !== void 0 ? _storeDetails_id : ""; 3545 var _storeDetails_timeZone; 3546 const storeTimeZone = (_storeDetails_timeZone = storeDetails === null || storeDetails === void 0 ? void 0 : storeDetails.timeZone) !== null && _storeDetails_timeZone !== void 0 ? _storeDetails_timeZone : ""; 3547 if (storeId) { 3548 persistStoreAndTimezone(dispatch, storeId, storeTimeZone); 3549 } 3550 if (storeId && prevStoreId !== storeId) { 3551 var _storeDetails_shippingTypes; 3552 var _storeDetails_shippingTypes_filter; 3553 dispatch((0,_Lib_store_zipcodeSlice__WEBPACK_IMPORTED_MODULE_11__/* .setShippingTypes */ .$z)((_storeDetails_shippingTypes_filter = storeDetails === null || storeDetails === void 0 ? void 0 : (_storeDetails_shippingTypes = storeDetails.shippingTypes) === null || _storeDetails_shippingTypes === void 0 ? void 0 : _storeDetails_shippingTypes.filter(_Lib_utils_typeUtils__WEBPACK_IMPORTED_MODULE_14__/* .notEmpty */ .Dw)) !== null && _storeDetails_shippingTypes_filter !== void 0 ? _storeDetails_shippingTypes_filter : [])); 3554 getInventoryList(storeId); 3555 } 3556 const zipChanged = !!zipcode && zipcode !== prevZip; 3557 if (zipChanged) { 3558 dispatch((0,_Lib_store_zipcodeSlice__WEBPACK_IMPORTED_MODULE_11__/* .setZipCode */ .ZC)(zipcode)); 3559 (0,_Lib_utils_browserStorage__WEBPACK_IMPORTED_MODULE_12__/* .setItem */ .LS)(_wildfork_commercetools_core_ui_dist_src_lib_constants_storage__WEBPACK_IMPORTED_MODULE_1__.STORAGE_KEYS.CUSTOMER_ZIP, zipcode, _wildfork_commercetools_core_ui_dist_src_lib_constants_storage__WEBPACK_IMPORTED_MODULE_1__.STORAGE_TYPES.LOCAL); 3560 var _storeDetails_membershipEligible; 3561 dispatch((0,_Lib_store_zipcodeSlice__WEBPACK_IMPORTED_MODULE_11__/* .setMembershipEligible */ .Z)((_storeDetails_membershipEligible = storeDetails === null || storeDetails === void 0 ? void 0 : storeDetails.membershipEligible) !== null && _storeDetails_membershipEligible !== void 0 ? _storeDetails_membershipEligible : false)); 3562 const regionCode = await fetchRegionCode(zipcode); 3563 if ((0,_wildfork_commercetools_core_ui_dist_src_lib_utils_typeUtils__WEBPACK_IMPORTED_MODULE_3__.isRegionIdValue)(regionCode)) { 3564 dispatch((0,_Lib_store_zipcodeSlice__WEBPACK_IMPORTED_MODULE_11__/* .setRegionId */ .i)(regionCode)); 3565 } 3566 notifyWebViewOfZipcodeChange(zipcode, !!state.environment.isWebViewVisitor); 3567 } 3568 await dispatch((0,_Lib_store_cartSlice__WEBPACK_IMPORTED_MODULE_8__/* .getCartItems */ .fq)({ 3569 checkInventory: true, 3570 errorCodeTranslation: {}, 3571 isLoggedInUser: !!(0,_Lib_store_customerInfoSlice__WEBPACK_IMPORTED_MODULE_9__/* .customerEmailSelector */ .qL)(state) 3572 })).unwrap(); 3573} 3574function useStoreFulfillmentWithInventoryCheck(param) { 3575 let { findOutOfStockItems, setRestrictedStateItems, getInventoryList } = param; 3576 const dispatch = (0,_Lib_store_hooks__WEBPACK_IMPORTED_MODULE_10__/* .useAppDispatch */ .T)(); 3577 const store = (0,react_redux__WEBPACK_IMPORTED_MODULE_4__/* .useStore */ .oR)(); 3578 const storeFulfillmentWithInventoryCheck = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (apiResult)=>{ 3579 var _state_zipcode, _apiResult_stores; 3580 if (!apiResult) return; 3581 const zipcode = getSelectedPostalCode(apiResult); 3582 if (!zipcode) return; 3583 const state = store.getState(); 3584 var _state_zipcode_zipcode; 3585 const prevZip = (_state_zipcode_zipcode = (_state_zipcode = state.zipcode) === null || _state_zipcode === void 0 ? void 0 : _state_zipcode.zipcode) !== null && _state_zipcode_zipcode !== void 0 ? _state_zipcode_zipcode : ""; 3586 const storeDetails = (_apiResult_stores = apiResult.stores) === null || _apiResult_stores === void 0 ? void 0 : _apiResult_stores[0]; 3587 const membershipInCart = !!(0,_Lib_store_cartSlice__WEBPACK_IMPORTED_MODULE_8__/* .membershipLineItemInTheCartSelector */ .fg)(state); 3588 const shouldAbortAfterOosCheck = await runOosAndRestrictedStateCheck({ 3589 zipcode, 3590 previousZipcode: prevZip, 3591 membershipInCart, 3592 storeDetails, 3593 findOutOfStockItems, 3594 setRestrictedStateItems 3595 }); 3596 if (shouldAbortAfterOosCheck) return; 3597 await applyStoreFulfillment({ 3598 dispatch, 3599 state, 3600 zipcode, 3601 storeDetails, 3602 getInventoryList 3603 }); 3604 }, [ 3605 dispatch, 3606 store, 3607 findOutOfStockItems, 3608 setRestrictedStateItems, 3609 getInventoryList 3610 ]); 3611 const inventoryCheckForPickup = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (apiResult)=>{ 3612 var _apiResult_stores; 3613 if (!apiResult) return; 3614 const selectedStore = (_apiResult_stores = apiResult.stores) === null || _apiResult_stores === void 0 ? void 0 : _apiResult_stores.find((store)=>store.selected); 3615 if (!selectedStore) { 3616 return; 3617 } 3618 const selectedStoreId = selectedStore.id; 3619 const itemsOutOfStock = await findOutOfStockItems({ 3620 storeIdProp: selectedStoreId, 3621 isMemberEligible: apiResult.membershipEligible 3622 }); 3623 if (itemsOutOfStock.length > 0) { 3624 return; 3625 } 3626 await dispatch((0,_Lib_store_cartSlice__WEBPACK_IMPORTED_MODULE_8__/* .getCartItems */ .fq)({ 3627 checkInventory: true, 3628 errorCodeTranslation: {} 3629 })).unwrap(); 3630 }, [ 3631 dispatch, 3632 findOutOfStockItems 3633 ]); 3634 return { 3635 storeFulfillmentWithInventoryCheck, 3636 inventoryCheckForPickup 3637 }; 3638} 3639 3640 3641/***/ }), 3642 3643/***/ 707635: 3644/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 3645 3646"use strict"; 3647 3648// EXPORTS 3649__webpack_require__.d(__webpack_exports__, { 3650 aD: function() { return /* binding */ createOnePageCheckoutHandlers; }, 3651 A2: function() { return /* binding */ createOpcHandlers; } 3652}); 3653 3654// UNUSED EXPORTS: createOpcHandlersWithInventoryCheck 3655 3656// EXTERNAL MODULE: ./src/api/cart/index.ts 3657var cart = __webpack_require__(797325); 3658// EXTERNAL MODULE: ./src/api/checkoutApi.ts 3659var checkoutApi = __webpack_require__(451881); 3660// EXTERNAL MODULE: ./src/lib/configs/HeadersConfig.ts 3661var HeadersConfig = __webpack_require__(420957); 3662// EXTERNAL MODULE: ./src/api/api.ts 3663var api = __webpack_require__(445913); 3664// EXTERNAL MODULE: ./src/api/constants/RestEndpoints.ts 3665var RestEndpoints = __webpack_require__(179901); 3666;// CONCATENATED MODULE: ./src/api/onePageCheckoutApi.ts 3667/** 3668 * One Page Checkout API Client 3669 * @description API functions for one-page checkout operations 3670 */ 3671 3672 3673/** 3674 * Loads checkout step data to fetch delivery address and delivery windows 3675 * 3676 * @param request - Checkout request containing step, and address info 3677 * @returns Promise resolving to checkout response with delivery address and windows 3678 * @throws {AxiosError} On network, validation, or server errors 3679 * 3680 * @description 3681 * This API endpoint handles multiple scenarios based on the step parameter: 3682 * 3683 * **Step 1: Initial Checkout Load** 3684 * - Fetches initial delivery address and available delivery windows 3685 * - Used when user first enters checkout or refreshes the checkout page 3686 * - Returns delivery address (if available) and all available delivery windows for the zipcode 3687 * 3688 * **Step 2: Shipping Address Selection/Update** 3689 * - Updates selected shipping address and refreshes delivery windows 3690 * - Used when user selects a different address or adds a new address 3691 * - Returns updated delivery address and refreshed delivery windows for the new zipcode 3692 * 3693 * **Step 3: Change Delivery Window** 3694 * - Updates selected delivery window 3695 * - Used when user changes their delivery time slot selection 3696 * - Returns updated selected window and confirms the change 3697 * 3698 * **Step 4: Gift Order** 3699 * - Updates gift order information 3700 * - Used when user selects a gift order and provides a gift message 3701 * - Returns updated gift order information and gift message 3702 * 3703 * @example 3704 * ```typescript 3705 * // Step 1: Initial Checkout Load 3706 * const result = await loadOnePageCheckout({ 3707 * step: 1, 3708 * }); 3709 * // Returns: deliveryAddress, deliveryWindows array 3710 * 3711 * // Step 2: Shipping Address Selection/Update 3712 * const result = await loadOnePageCheckout({ 3713 * step: 2, 3714 * address, 3715 * defaultAddress, 3716 * saveAddress, 3717 * }); 3718 * // Returns: updated deliveryAddress, refreshed deliveryWindows array 3719 * 3720 * // Step 3: Change Delivery Window 3721 * const result = await loadOnePageCheckout({ 3722 * step: 3, 3723 * deliveryWindowId: 6 3724 * }); 3725 * // Returns: updated selectedWindow 3726 * 3727 * // Step 4: Gift Order 3728 * const result = await loadOnePageCheckout({ 3729 * step: 4, 3730 * isGiftOrder: true, 3731 * giftMessage: 'Happy Birthday!', 3732 * }); 3733 * // Returns: updated gift order information and gift message 3734 * ``` 3735 */ const loadOnePageCheckout = (request)=>{ 3736 const headers = (0,HeadersConfig/* buildHeaders */.us)(HeadersConfig/* cartIdHeader */.ZK, HeadersConfig/* zipCodeHeader */.U8); 3737 // Backend expects `step` as a query param: /cart/single/checkout?step=1|2|3 3738 const { step, ...body } = request; 3739 return api/* default */.ZP.post(RestEndpoints/* default */.Z.CHECKOUT.ONE_PAGE_CHECKOUT, body, { 3740 headers, 3741 params: { 3742 step 3743 } 3744 }); 3745}; 3746const loadOnePageCheckoutPickup = (request)=>{ 3747 const headers = (0,HeadersConfig/* buildHeaders */.us)(HeadersConfig/* cartIdHeader */.ZK, HeadersConfig/* zipCodeHeader */.U8); 3748 // Backend expects `step` as a query param: /cart/single/checkout?step=1|2|3 3749 const { step, ...body } = request; 3750 const modifiedBody = { 3751 ...body 3752 }; 3753 return api/* default */.ZP.post(RestEndpoints/* default */.Z.CHECKOUT.ONE_PAGE_CHECKOUT_PICKUP, modifiedBody, { 3754 headers, 3755 params: { 3756 step 3757 } 3758 }); 3759}; 3760 3761// EXTERNAL MODULE: ./src/lib/events.ts 3762var events = __webpack_require__(866067); 3763// EXTERNAL MODULE: ./src/lib/store/cartSlice.ts + 1 modules 3764var cartSlice = __webpack_require__(484725); 3765// EXTERNAL MODULE: ./src/lib/store/orderSubmit.slice.ts 3766var orderSubmit_slice = __webpack_require__(564449); 3767// EXTERNAL MODULE: ./src/lib/utils/reduxCommon.ts 3768var reduxCommon = __webpack_require__(675121); 3769// EXTERNAL MODULE: ./src/components/checkout/delivery/dbDeliveryDataTransformer.ts 3770var dbDeliveryDataTransformer = __webpack_require__(672311); 3771;// CONCATENATED MODULE: ./src/components/one-page-checkout/utils/createOnePageCheckoutHandlers.ts 3772 3773 3774 3775 3776 3777 3778 3779 3780const normalizeVerifiedAddress = (address)=>{ 3781 if (!address) return undefined; 3782 return { 3783 id: address.id, 3784 firstName: address.firstName || "", 3785 lastName: address.lastName || "", 3786 phone: address.phone || "", 3787 address1: address.address1 || "", 3788 address2: address.address2 || "", 3789 city: address.city || "", 3790 state: address.state, 3791 postalCode: address.postalCode || "", 3792 country: address.country || "US", 3793 email: address.email || "", 3794 defaultAddress: Boolean(address.defaultAddress), 3795 deliveryInstruction: address.deliveryInstructions || "",
3796 isMilitaryAddress: Boolean(address.isMilitaryAddress), 3797 militaryAddrInstruction: address.militaryAddressInstruction || "", 3798 status: address.status 3799 }; 3800}; 3801const createOpcHandlersWithInventoryCheck = (param)=>{ 3802 let { storeFulfillmentWithInventoryCheck, inventoryCheckForPickup } = param; 3803 return { 3804 initializeOnePageCheckout: async ()=>{ 3805 const response = await loadOnePageCheckout({ 3806 step: 1 3807 }); 3808 const data = response.data; 3809 await storeFulfillmentWithInventoryCheck(data); 3810 return data; 3811 }, 3812 saveShippingAddress: async (param)=>{ 3813 let { address, defaultAddress, saveAddress } = param; 3814 const response = await loadOnePageCheckout({ 3815 step: 2, 3816 address, 3817 defaultAddress, 3818 saveAddress 3819 }); 3820 const data = response.data; 3821 await storeFulfillmentWithInventoryCheck(data); 3822 return data; 3823 }, 3824 saveOnePageCheckoutPickupDetails: async (param)=>{ 3825 let { latitude, longitude, distance, pickupDetails } = param; 3826 const response = await loadOnePageCheckoutPickup({ 3827 step: 1, 3828 latitude, 3829 longitude, 3830 distance, 3831 pickupDetails 3832 }); 3833 const data = response.data; 3834 await inventoryCheckForPickup(data); 3835 return data; 3836 } 3837 }; 3838}; 3839const createOpcHandlers = (param)=>{ 3840 let { getDeliveryWindowSession, setDeliveryWindowSession } = param; 3841 return { 3842 verifyShippingAddress: async (param)=>{ 3843 let { address } = param; 3844 try { 3845 var _response_data; 3846 const response = await (0,cart/* verifyShippingAddress */.R8)(address); 3847 return { 3848 address: normalizeVerifiedAddress(response === null || response === void 0 ? void 0 : (_response_data = response.data) === null || _response_data === void 0 ? void 0 : _response_data.address) 3849 }; 3850 } catch (error) { 3851 console.error("verifyShippingAddress error:", error); 3852 return { 3853 address: undefined 3854 }; 3855 } 3856 }, 3857 transformDeliveryWindows: (rawWindows, languageCode)=>{ 3858 return (0,dbDeliveryDataTransformer/* transformDbResponseForDeliveryPresentation */.Cw)(rawWindows, languageCode || "en-US"); 3859 }, 3860 initializeOnePageCheckoutPickup: async (param)=>{ 3861 let { latitude, longitude, distance } = param; 3862 const response = await loadOnePageCheckoutPickup({ 3863 step: 1, 3864 latitude, 3865 longitude, 3866 distance 3867 }); 3868 return response.data; 3869 }, 3870 updateDeliveryWindow: async (param)=>{ 3871 let { deliveryWindowId } = param; 3872 const response = await loadOnePageCheckout({ 3873 step: 3, 3874 deliveryWindowId: deliveryWindowId.toString() 3875 }); 3876 return response.data; 3877 }, 3878 submitBillingAddress: async (param)=>{ 3879 let { billingAddressPayload } = param; 3880 try { 3881 const addBillingAddressResponse = await (0,cart/* addBillingAddress */.Y_)(billingAddressPayload); 3882 return addBillingAddressResponse; 3883 } catch (error) { 3884 throw error; 3885 } 3886 }, 3887 cartCheckInventory: async ()=>{ 3888 try { 3889 const dispatch = (0,reduxCommon/* getReduxDispatch */.yj)(); 3890 await dispatch((0,cartSlice/* getCartItems */.fq)({ 3891 checkInventory: true 3892 })); 3893 } catch (error) { 3894 throw error; 3895 } 3896 }, 3897 submitOrder: async (submitOrderPayload)=>{ 3898 try { 3899 const response = await (0,checkoutApi/* submitOrder */.pm)(submitOrderPayload); 3900 if (response.data) { 3901 const dispatch = (0,reduxCommon/* getReduxDispatch */.yj)(); 3902 dispatch((0,orderSubmit_slice/* setOrderSubmitResponse */.VN)(response.data)); 3903 // Preserve gift flag for confirmation analytics (parity with legacy checkout) 3904 const giftMeta = getDeliveryWindowSession(); 3905 setDeliveryWindowSession({ 3906 ...response.data.deliveryWindow, 3907 isAGift: giftMeta.isAGift, 3908 giftMessage: giftMeta.giftMessage 3909 }); 3910 } 3911 return response === null || response === void 0 ? void 0 : response.data; 3912 } catch (error) { 3913 throw error; 3914 } 3915 }, 3916 submitOrderGC: async (submitOrderGCPayload)=>{ 3917 try { 3918 const response = await (0,checkoutApi/* submitOrderGC */.FL)(submitOrderGCPayload); 3919 return response === null || response === void 0 ? void 0 : response.data; 3920 } catch (error) { 3921 throw error; 3922 } 3923 }, 3924 submitGiftOrderInformation: async (param)=>{ 3925 let { isGiftOrder, giftMessage } = param; 3926 const response = await loadOnePageCheckout({ 3927 step: 4, 3928 isGiftOrder, 3929 giftMessage: isGiftOrder ? giftMessage : "" 3930 }); 3931 if (isGiftOrder) { 3932 setDeliveryWindowSession({ 3933 isAGift: true, 3934 giftMessage 3935 }); 3936 } 3937 return response.data; 3938 }, 3939 addShippingAddress: async (param)=>{ 3940 let { data, defaultAddress } = param; 3941 try { 3942 const dispatch = (0,reduxCommon/* getReduxDispatch */.yj)(); 3943 const result = await dispatch((0,cartSlice/* addShippingAddress */.VE)({ 3944 data, 3945 defaultAddress 3946 })).unwrap(); 3947 return result; 3948 } catch (error) { 3949 throw error; 3950 } 3951 }, 3952 onOrderSubmitFailed: ()=>
3952events/* default */.Z.emit(events/* OrderEventType */.v.ORDER_SUBMIT_FAILED) 3953 }; 3954}; 3955const createOnePageCheckoutHandlers = (param)=>{ 3956 let { storeFulfillmentWithInventoryCheck, inventoryCheckForPickup, getDeliveryWindowSession, setDeliveryWindowSession } = param; 3957 return { 3958 ...createOpcHandlersWithInventoryCheck({ 3959 storeFulfillmentWithInventoryCheck, 3960 inventoryCheckForPickup 3961 }), 3962 ...createOpcHandlers({ 3963 getDeliveryWindowSession, 3964 setDeliveryWindowSession 3965 }) 3966 }; 3967}; 3968 3969 3970/***/ }), 3971 3972/***/ 733972: 3973/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 3974 3975"use strict"; 3976/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3977/* harmony export */ t: function() { return /* binding */ CustomerContextProvider; } 3978/* harmony export */ }); 3979/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(785893); 3980/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(93050); 3981/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_context__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wildfork_commercetools_core_ui_dist_src_lib_context__WEBPACK_IMPORTED_MODULE_1__); 3982/* harmony import */ var _Lib_hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(130414); 3983/* harmony import */ var _Lib_store_favoritesDataSlice__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(702494); 3984/* harmony import */ var _Lib_store_hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(267097); 3985 3986 3987 3988 3989 3990const CustomerContextProvider = (param)=>{ 3991 let { children } = param; 3992 const { customerInfo, isMember, isLoggedIn, membershipType } = (0,_Lib_hooks__WEBPACK_IMPORTED_MODULE_2__/* .useCustomer */ .ON)(); 3993 const hasFavorites = (0,_Lib_store_hooks__WEBPACK_IMPORTED_MODULE_4__/* .useAppSelector */ .C)(_Lib_store_favoritesDataSlice__WEBPACK_IMPORTED_MODULE_3__/* .selectHasFavorites */ .mu); 3994 return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_wildfork_commercetools_core_ui_dist_src_lib_context__WEBPACK_IMPORTED_MODULE_1__.CustomerContext.Provider, { 3995 value: { 3996 customerId: (customerInfo === null || customerInfo === void 0 ? void 0 : customerInfo.customerId) || "", 3997 email: customerInfo === null || customerInfo === void 0 ? void 0 : customerInfo.email, 3998 firstName: customerInfo === null || customerInfo === void 0 ? void 0 : customerInfo.firstName, 3999 lastName: (customerInfo === null || customerInfo === void 0 ? void 0 : customerInfo.lastName) || "", 4000 addressList: (customerInfo === null || customerInfo === void 0 ? void 0 : customerInfo.address) || [], 4001 isMember, 4002 isLoggedIn, 4003 membershipType, 4004 hasFavorites 4005 }, 4006 children: children 4007 }); 4008}; 4009 4010 4011/***/ }), 4012 4013/***/ 792421: 4014/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 4015 4016"use strict"; 4017/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4018/* harmony export */ r: function() { return /* binding */ LocationContextProvider; } 4019/* harmony export */ }); 4020/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(785893); 4021/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(667294); 4022/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(93050); 4023/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_context__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wildfork_commercetools_core_ui_dist_src_lib_context__WEBPACK_IMPORTED_MODULE_2__); 4024/* harmony import */ var _Lib_hooks_useZipCode__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(455489); 4025/* harmony import */ var _Lib_store_hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(267097); 4026/* harmony import */ var _Lib_store_zipcodeSlice__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(480326); 4027 4028 4029 4030 4031 4032 4033const LocationContextProvider = (param)=>{ 4034 let { children } = param; 4035 var _storeDetails_stores_, _storeDetails_stores; 4036 const { zipcode } = (0,_Lib_hooks_useZipCode__WEBPACK_IMPORTED_MODULE_3__/* .useZipCode */ .lH)(); 4037 const isGroundZipcode = (0,_Lib_store_hooks__WEBPACK_IMPORTED_MODULE_4__/* .useAppSelector */ .C)(_Lib_store_zipcodeSlice__WEBPACK_IMPORTED_MODULE_5__/* .isGroundZipcodeSelector */ .gF); 4038 const availability = (0,_Lib_store_hooks__WEBPACK_IMPORTED_MODULE_4__/* .useAppSelector */ .C)(_Lib_store_zipcodeSlice__WEBPACK_IMPORTED_MODULE_5__/* .isZipcodeValidForCartSelector */ .IF); 4039 const { regionId, regionIdMapped } = (0,_Lib_store_hooks__WEBPACK_IMPORTED_MODULE_4__/* .useAppSelector */ .C)(_Lib_store_zipcodeSlice__WEBPACK_IMPORTED_MODULE_5__/* .ZipCodeSelector */ .pz); 4040 const membershipEligible = (0,_Lib_store_hooks__WEBPACK_IMPORTED_MODULE_4__/* .useAppSelector */ .C)(_Lib_store_zipcodeSlice__WEBPACK_IMPORTED_MODULE_5__/* .membershipEligibleSelector */ .mq); 4041 const shippingTypes = (0,_Lib_store_hooks__WEBPACK_IMPORTED_MODULE_4__/* .useAppSelector */ .C)(_Lib_store_zipcodeSlice__WEBPACK_IMPORTED_MODULE_5__/* .selectShippingTypes */ .Mb); 4042 const { locale } = (0,_Lib_store_hooks__WEBPACK_IMPORTED_MODULE_4__/* .useAppSelector */ .C)((state)=>state); 4043 const { pickUpAvailability, deliveryAvailability } = (0,_Lib_store_hooks__WEBPACK_IMPORTED_MODULE_4__/* .useAppSelector */ .C)(_Lib_store_zipcodeSlice__WEBPACK_IMPORTED_MODULE_5__/* .shippingAvailabilitySelector */ .Do); 4044 const storeDetails = (0,_Lib_store_hooks__WEBPACK_IMPORTED_MODULE_4__/* .useAppSelector */ .C)(_Lib_store_zipcodeSlice__WEBPACK_IMPORTED_MODULE_5__/* .storeDetailsSelector */ .W$); 4045 const isMembershipEligible = zipcode ? membershipEligible : false;
4046 var _storeDetails_stores__ebtEligible; 4047 const isStoreEligibleForEBT = (_storeDetails_stores__ebtEligible = storeDetails === null || storeDetails === void 0 ? void 0 : (_storeDetails_stores = storeDetails.stores) === null || _storeDetails_stores === void 0 ? void 0 : (_storeDetails_stores_ = _storeDetails_stores[0]) === null || _storeDetails_stores_ === void 0 ? void 0 : _storeDetails_stores_.ebtEligible) !== null && _storeDetails_stores__ebtEligible !== void 0 ? _storeDetails_stores__ebtEligible : false; 4048 const contextValue = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>({ 4049 isZipCodeValidForCart: availability, 4050 membershipEligible: isMembershipEligible, 4051 regionId, 4052 regionIdMapped, 4053 zipcode, 4054 shippingTypes, 4055 locale, 4056 isGroundZipcode, 4057 pickUpAvailability, 4058 deliveryAvailability, 4059 storeDetails, 4060 isStoreEligibleForEBT 4061 }), [ 4062 availability, 4063 zipcode, 4064 isMembershipEligible, 4065 regionId, 4066 regionIdMapped, 4067 shippingTypes, 4068 locale, 4069 isGroundZipcode, 4070 pickUpAvailability, 4071 deliveryAvailability, 4072 storeDetails, 4073 isStoreEligibleForEBT 4074 ]); 4075 return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_wildfork_commercetools_core_ui_dist_src_lib_context__WEBPACK_IMPORTED_MODULE_2__.LocationContext.Provider, { 4076 value: contextValue, 4077 children: children 4078 }); 4079}; 4080 4081 4082/***/ }), 4083 4084/***/ 255821: 4085/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 4086 4087"use strict"; 4088 4089// EXPORTS 4090__webpack_require__.d(__webpack_exports__, { 4091 G: function() { return /* binding */ OpcContextProvider; } 4092}); 4093 4094// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js 4095var jsx_runtime = __webpack_require__(785893); 4096// EXTERNAL MODULE: ./node_modules/react/index.js 4097var react = __webpack_require__(667294); 4098// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/lib/context/index.js 4099var context = __webpack_require__(93050); 4100// EXTERNAL MODULE: ./src/components/checkout/modals/AddressVerificationModal.tsx 4101var AddressVerificationModal = __webpack_require__(722857); 4102// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/components/one-page-checkout/index.js 4103var one_page_checkout = __webpack_require__(879161); 4104// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/lib/onePageCheckout/schemas/checkout/index.js 4105var checkout = __webpack_require__(579324); 4106;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/driverTipSelector/useTipSelector.ts 4107 4108 4109 4110 4111const useTipSelector = ()=>{ 4112 const { setValue, watch, getValues, formState: { errors } } = (0,one_page_checkout/* useGetOpcFormValues */.BC)(); 4113 const { onDriverTipChange, cart, isDriverTipApplicable } = (0,context.useCartContext)(); 4114 const [showCustomInput, setShowCustomInput] = (0,react.useState)(false); 4115 const [isSelectedView, setIsSelectedView] = (0,react.useState)(false); 4116 var _watch; 4117 const tipAmount = (_watch = watch("tip")) !== null && _watch !== void 0 ? _watch : 0; 4118 const tipError = errors["tip"]; 4119 const isCustomAmountInvalid = Boolean(tipError && Object.keys(tipError).length > 0); 4120 const showCustomInputForCustomAmount = (value)=>{ 4121 const isTipAmountInPreset = checkout.TIP_PRESETS.some((presetAmount)=>presetAmount === Number(value)); 4122 if (!isTipAmountInPreset) { 4123 setShowCustomInput(true); 4124 } 4125 }; 4126 (0,react.useEffect)(function setInititalTipFromBETip() { 4127 var _cart_tipReceived; 4128 const initialDollars = ((_cart_tipReceived = cart.tipReceived) !== null && _cart_tipReceived !== void 0 ? _cart_tipReceived : 0) / 100; 4129 if (initialDollars === 0) { 4130 return; 4131 } 4132 setValue("tip", initialDollars); 4133 onDriverTipChange === null || onDriverTipChange === void 0 ? void 0 : onDriverTipChange(initialDollars); 4134 showCustomInputForCustomAmount(initialDollars); 4135 }, [ 4136 cart.tipReceived, 4137 onDriverTipChange, 4138 setValue 4139 ]); 4140 const handlePresetSelect = (0,react.useCallback)((amount)=>{ 4141 setValue("tip", amount); 4142 onDriverTipChange === null || onDriverTipChange === void 0 ? void 0 : onDriverTipChange(amount); 4143 setIsSelectedView(true); 4144 setShowCustomInput(false); 4145 }, [ 4146 setValue, 4147 onDriverTipChange 4148 ]); 4149 const handleCustomClick = (0,react.useCallback)(()=>{ 4150 setShowCustomInput(true); 4151 }, []); 4152 const applyCustomTip = (0,react.useCallback)(()=>{ 4153 const customTipAmount = Number(getValues("tip")); 4154 onDriverTipChange === null || onDriverTipChange === void 0 ? void 0 : onDriverTipChange(customTipAmount); 4155 setShowCustomInput(false); 4156 setIsSelectedView(true); 4157 }, [ 4158 getValues, 4159 onDriverTipChange 4160 ]); 4161 const handleChangeClick = (0,react.useCallback)(()=>{ 4162 setIsSelectedView(false); 4163 showCustomInputForCustomAmount(tipAmount); 4164 }, [ 4165 tipAmount 4166 ]); 4167 return { 4168 tipAmount: Number(tipAmount), 4169 showCustomInput, 4170 isSelectedView, 4171 isCustomAmountInvalid, 4172 handlePresetSelect, 4173 handleCustomClick, 4174 applyCustomTip, 4175 handleChangeClick, 4176 isDriverTipApplicable 4177 }; 4178}; 4179 4180;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/driverTipSelector/index.ts 4181 4182 4183// EXTERNAL MODULE: ./src/components/one-page-checkout/hooks/payment/index.ts + 29 modules 4184var payment = __webpack_require__(500031); 4185// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/components/one-page-checkout/AddressSection/utils/deliveryAddressUtils.js 4186var deliveryAddressUtils = __webpack_require__(236228); 4187// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/lib/constants/locale.js 4188var locale = __webpack_require__(808439); 4189// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/lib/onePageCheckout/utils/applyDeliveryWindowsFromApiResponse.js 4190var applyDeliveryWindowsFromApiResponse = __webpack_require__(746476); 4191// EXTERNAL MODULE: ./src/lib/store/hooks.ts 4192var hooks = __webpack_require__(267097); 4193// EXTERNAL MODULE: ./src/lib/store/onePageCheckoutPaymentSlice.ts 4194var onePageCheckoutPaymentSlice = __webpack_require__(412512); 4195;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/shippingAddressSection/useOpcInitialization.ts 4196 4197 4198 4199 4200 4201 4202 4203 4204const countryCode = locale.CURRENT_LOCALE === null || locale.CURRENT_LOCALE === void 0 ? void 0 : locale.CURRENT_LOCALE.countryShort; 4205function useOpcInitialization(param) { 4206 let { skip, handlers, setDeliveryCurrentView, setAddressFromFastlane } = param; 4207 const { setValue, fulfillmentType } = (0,one_page_checkout/* useGetOpcFormValues */.BC)(); 4208 const { fastlaneConfig, isFastlaneEnabledWithConfig, isGuestFormSubmitted } = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectOnePageCheckoutPaymentSelector */.n$); 4209 const { zipcode } = (0,context.useLocationContext)(); 4210 const { isLoggedIn } = (0,context.useCustomerContext)(); 4211 const { setOpcNewFulfillmentType } = (0,context.useUIStateContext)(); 4212 const [isLoading, setIsLoading] = (0,react.useState)(!skip); 4213 const [error, setError] = (0,react.useState)(null); 4214 const isCheckoutFormShown = isLoggedIn || isGuestFormSubmitted; 4215 const initializeCheckoutDelivery = (0,react.useCallback)(async ()=>{ 4216 setValue("fulfillmentType", "delivery"); 4217 setOpcNewFulfillmentType("delivery"); 4218 if (!isCheckoutFormShown) { 4219 return; 4220 } 4221 try { 4222 setError(null); 4223 setIsLoading(true); 4224 const result = await handlers.initializeOnePageCheckout(); 4225 (0,deliveryAddressUtils/* initializeAddresses */.fm)(result === null || result === void 0 ? void 0 : result.address, result === null || result === void 0 ? void 0 : result.stores, isLoggedIn, setValue, setDeliveryCurrentView); 4226 (0,applyDeliveryWindowsFromApiResponse/* applyDeliveryWindowsFromApiResponse */.C)(result === null || result === void 0 ? void 0 : result.windows, handlers, setValue); 4227 if (result === null || result === void 0 ? void 0 : result.shippingFee) { 4228 setValue("shippingFee", result.shippingFee); 4229 } 4230 if (isFastlaneEnabledWithConfig) { 4231 var _fastlaneAuthData_profileData; 4232 const fastlaneAuthData = fastlaneConfig.fastlaneAuthData; 4233 if (fastlaneAuthData === null || fastlaneAuthData === void 0 ? void 0 : (_fastlaneAuthData_profileData = fastlaneAuthData.profileData) === null || _fastlaneAuthData_profileData === void 0 ? void 0 : _fastlaneAuthData_profileData.shippingAddress) { 4234 await setAddressFromFastlane({ 4235 ...fastlaneAuthData.profileData.shippingAddress, 4236 email: fastlaneConfig.guestUserEmail 4237 }); 4238 } 4239 } 4240 } catch (err) { 4241 const errorMessage = err instanceof Error ? err.message : "An unknown error occurred"; 4242 setError(errorMessage); 4243 console.error("Error initializing one page checkout:", err); 4244 } finally{ 4245 setIsLoading(false); 4246 } 4247 }, [ 4248 setValue, 4249 setOpcNewFulfillmentType, 4250 isCheckoutFormShown, 4251 handlers, 4252 isLoggedIn, 4253 setDeliveryCurrentView, 4254 isFastlaneEnabledWithConfig, 4255 fastlaneConfig.fastlaneAuthData, 4256 fastlaneConfig.guestUserEmail, 4257 setAddressFromFastlane 4258 ]); 4259 const initializeCheckoutPickup = (0,react.useCallback)(async (initializeCheckoutPickupProps)=>{ 4260 const { customZipcode, customDistance, loggedInCustomerPickupDetail
4260s, isSearchStore } = initializeCheckoutPickupProps || {}; 4261 setValue("fulfillmentType", "pickup"); 4262 setValue("useSameAsShipping", false); 4263 setOpcNewFulfillmentType("pickup"); 4264 if (!isCheckoutFormShown) { 4265 setIsLoading(false); 4266 return; 4267 } 4268 if (isLoggedIn && !(loggedInCustomerPickupDetails || isSearchStore)) { 4269 setIsLoading(false); 4270 return; 4271 } 4272 const zipcodeQuery = customZipcode !== null && customZipcode !== void 0 ? customZipcode : zipcode; 4273 const distanceQuery = customDistance !== null && customDistance !== void 0 ? customDistance : "100"; 4274 const isGoogleMapsLoaded = true && Boolean(window.google); 4275 if (zipcodeQuery && isGoogleMapsLoaded) { 4276 setIsLoading(true); 4277 try { 4278 var _response_results, _response_results__geometry, _response_results_; 4279 const geocoder = new window.google.maps.Geocoder(); 4280 const response = await geocoder.geocode({ 4281 address: "".concat(zipcodeQuery, ", ").concat(countryCode === null || countryCode === void 0 ? void 0 : countryCode.toUpperCase()) 4282 }); 4283 if (!(response === null || response === void 0 ? void 0 : (_response_results = response.results) === null || _response_results === void 0 ? void 0 : _response_results.length) || !((_response_results_ = response.results[0]) === null || _response_results_ === void 0 ? void 0 : (_response_results__geometry = _response_results_.geometry) === null || _response_results__geometry === void 0 ? void 0 : _response_results__geometry.location)) { 4284 throw new Error("there were no results in google's geocode response"); 4285 } 4286 const latitude = response.results[0].geometry.location.lat(); 4287 const longitude = response.results[0].geometry.location.lng(); 4288 let result; 4289 if (loggedInCustomerPickupDetails) { 4290 result = await handlers.saveOnePageCheckoutPickupDetails({ 4291 latitude, 4292 longitude, 4293 pickupDetails: loggedInCustomerPickupDetails 4294 }); 4295 } else { 4296 result = await handlers.initializeOnePageCheckoutPickup({ 4297 latitude, 4298 longitude, 4299 distance: distanceQuery 4300 }); 4301 } 4302 setValue("pickupStores", result === null || result === void 0 ? void 0 : result.stores); 4303 setValue("searchPickupStore.postalCode", zipcodeQuery); 4304 setValue("searchPickupStore.searchedPostalCode", zipcodeQuery); 4305 setValue("searchPickupStore.distance", distanceQuery); 4306 (0,applyDeliveryWindowsFromApiResponse/* applyDeliveryWindowsFromApiResponse */.C)(result === null || result === void 0 ? void 0 : result.windows, handlers, setValue); 4307 } catch (err) { 4308 console.error("initializeCheckoutPickup() in useOnePageCheckoutInitialization", err); 4309 } finally{ 4310 setIsLoading(false); 4311 } 4312 } 4313 }, [ 4314 handlers, 4315 isCheckoutFormShown, 4316 isLoggedIn, 4317 setOpcNewFulfillmentType, 4318 setValue, 4319 zipcode 4320 ]); 4321 const toggleSelectedDeliveryMethod = (0,react.useCallback)((newFulfillmentType)=>{ 4322 if (fulfillmentType === newFulfillmentType) { 4323 return; 4324 } 4325 if (fulfillmentType === "delivery") { 4326 initializeCheckoutPickup(); 4327 } else { 4328 initializeCheckoutDelivery(); 4329 } 4330 }, [ 4331 fulfillmentType, 4332 initializeCheckoutDelivery, 4333 initializeCheckoutPickup 4334 ]); 4335 return { 4336 isLoading, 4337 error, 4338 refetch: initializeCheckoutDelivery, 4339 initializeCheckoutDelivery, 4340 initializeCheckoutPickup, 4341 toggleSelectedDeliveryMethod, 4342 fulfillmentType 4343 }; 4344} 4345 4346;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/shippingAddressSection/useShippingAddress.ts 4347 4348 4349 4350 4351 4352const useShippingAddress = (param)=>{ 4353 let { initializeCheckoutDelivery, initializeCheckoutPickup } = param; 4354 const { onlyMembershipItemInTheCart, membershipItemInTheCart } = (0,context.useCartContext)(); 4355 const skip = onlyMembershipItemInTheCart; 4356 const { pickUpAvailability, deliveryAvailability } = (0,context.useLocationContext)(); 4357 const { isLoggedIn } = (0,context.useCustomerContext)(); 4358 const { isGuestFormSubmitted } = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectOnePageCheckoutPaymentSelector */.n$); 4359 const shouldShowCheckoutForm = isLoggedIn || isGuestFormSubmitted; 4360 const didInitRef = (0,react.useRef)(false); 4361 const { fulfillmentType } = (0,one_page_checkout/* useGetOpcFormValues */.BC)(); 4362 (0,react.useEffect)(function initializeAddressForm() {
4363 if (skip || didInitRef.current || !shouldShowCheckoutForm) { 4364 return; 4365 } 4366 if (deliveryAvailability && fulfillmentType === "delivery") { 4367 initializeCheckoutDelivery(); 4368 didInitRef.current = true; 4369 } else if (pickUpAvailability && fulfillmentType === "pickup") { 4370 initializeCheckoutPickup(); 4371 didInitRef.current = true; 4372 } else if (deliveryAvailability) { 4373 initializeCheckoutDelivery(); 4374 didInitRef.current = true; 4375 } else if (pickUpAvailability && !deliveryAvailability) { 4376 initializeCheckoutPickup(); 4377 didInitRef.current = true; 4378 } 4379 }, [ 4380 deliveryAvailability, 4381 fulfillmentType, 4382 initializeCheckoutDelivery, 4383 initializeCheckoutPickup, 4384 pickUpAvailability, 4385 shouldShowCheckoutForm, 4386 skip 4387 ]); 4388 return { 4389 membershipItemInTheCart, 4390 onlyMembershipItemInTheCart, 4391 fulfillmentType 4392 }; 4393}; 4394 4395// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/components/one-page-checkout/AddressSection/types/deliveryAddressSectionTypes.js 4396var deliveryAddressSectionTypes = __webpack_require__(480450); 4397// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/lib/hooks/useBreakpoint.js 4398var useBreakpoint = __webpack_require__(730365); 4399// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/lib/onePageCheckout/constants/address.js 4400var address = __webpack_require__(512733); 4401// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/lib/onePageCheckout/schemas/checkout/shippingAddressSchema.js 4402var shippingAddressSchema = __webpack_require__(869375); 4403// EXTERNAL MODULE: ./src/api/customerApi.ts 4404var customerApi = __webpack_require__(164535); 4405// EXTERNAL MODULE: ./src/lib/utils/snackbarHandlers.ts 4406var snackbarHandlers = __webpack_require__(921134); 4407// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/lib/onePageCheckout/utils/fastlaneAddressMapper.js 4408var fastlaneAddressMapper = __webpack_require__(51311); 4409;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/shippingAddressSection/deliveryAddressSection/useDeliveryFastlaneAddress.ts 4410 4411 4412 4413 4414 4415const useDeliveryFastlaneAddress = (param)=>{ 4416 let { setCurrentView: setAddressSectionCurrentView, saveShippingAddress } = param; 4417 const { setValue } = (0,one_page_checkout/* useGetOpcFormValues */.BC)(); 4418 const { fastlaneObj, fastlaneConfig } = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectOnePageCheckoutPaymentSelector */.n$); 4419 const setAddressFromFastlane = (0,react.useCallback)(async (fastlaneAddress)=>{ 4420 if (!fastlaneAddress) return; 4421 const mappedAddress = (0,fastlaneAddressMapper/* mapFastlaneAddressToShippingAddress */.C)({ 4422 ...fastlaneAddress, 4423 email: fastlaneAddress.email || fastlaneConfig.guestUserEmail 4424 }); 4425 setValue("shippingAddress", mappedAddress, { 4426 shouldValidate: true, 4427 shouldTouch: true 4428 }); 4429 setValue("billingAddress", mappedAddress, { 4430 shouldValidate: true, 4431 shouldTouch: true 4432 }); 4433 if (mappedAddress.firstName) { 4434 await saveShippingAddress(mappedAddress); 4435 } 4436 setAddressSectionCurrentView("selected"); 4437 }, [ 4438 fastlaneConfig, 4439 saveShippingAddress, 4440 setValue, 4441 setAddressSectionCurrentView 4442 ]); 4443 const changeAddressFastlane = (0,react.useCallback)(async ()=>{ 4444 if (!(fastlaneObj === null || fastlaneObj === void 0 ? void 0 : fastlaneObj.showShippingAddressSelector)) { 4445 console.warn("[useFastlaneAddress] fastlaneObj is not initialized"); 4446 return; 4447 } 4448 try { 4449 var _fastlaneObj_showShippingAddressSelector, _fastlaneConfig_fastlaneAuthData; 4450 const { selectedAddress, selectionChanged } = await (fastlaneObj === null || fastlaneObj === void 0 ? void 0 : (_fastlaneObj_showShippingAddressSelector = fastlaneObj.showShippingAddressSelector) === null || _fastlaneObj_showShippingAddressSelector === void 0 ? void 0 : _fastlaneObj_showShippingAddressSelector.call(fastlaneObj)); 4451 if (!selectedAddress || Object.keys(selectedAddress).length === 0) { 4452 console.error("No address selected"); 4453 return; 4454 } 4455 setAddressFromFastlane(selectedAddress); 4456 if (selectionChanged && (fastlaneConfig === null || fastlaneConfig === void 0 ? void 0 : (_fastlaneConfig_fastlaneAuthData = fastlaneConfig.fastlaneAuthData) === null || _fastlaneConfig_fastlaneAuthData === void 0 ? void 0 : _fastlaneConfig_fastlaneAuthData.profileData)) { 4457 fastlaneConfig.fastlaneAuthData.profileData.shippingAddress = selectedAddress; 4458 fastlaneConfig.selectionChanged = selectionChanged; 4459 } 4460 } catch (error) { 4461 console.error("[useFastlaneAddress] Error showing address selector:", error); 4462 } 4463 }, [ 4464 fastlaneConfig, 4465 fastlaneObj, 4466 setAddressFromFastlane 4467 ]); 4468 return { 4469 setAddressFromFastlane, 4470 changeAddressFastlane 4471 }; 4472}; 4473 4474;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/shippingAddressSection/deliveryAddressSection/useDeliveryAddressSection.ts 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489const useDeliveryAddressSection = (param)=>{ 4490 let { handlers } = param; 4491 const { setValue, getValues, watch, resetField } = (0,one_page_checkout/* useGetOpcFormValues */.BC)(); 4492 const { isLoggedIn, email: customerEmail } = (0,context.useCustomerContext)(); 4493 const { isMobileWidth }
4493 = (0,useBreakpoint.useBreakpoint)(); 4494 const selectedAddressId = watch("selectedAddressId"); 4495 const isNewAddress = watch("isNewAddress"); 4496 const shippingAddress = watch("shippingAddress"); 4497 const watchedSavedAddresses = watch("savedAddresses"); 4498 const savedAddresses = (0,react.useMemo)(()=>(0,deliveryAddressUtils/* ensureAddressIds */.A$)(watchedSavedAddresses !== null && watchedSavedAddresses !== void 0 ? watchedSavedAddresses : []), [ 4499 watchedSavedAddresses 4500 ]); 4501 const [isLoading, setIsLoading] = (0,react.useState)(false); 4502 const [editingAddressId, setEditingAddressId] = (0,react.useState)(null); 4503 const [addressIdToDelete, setAddressIdToDelete] = (0,react.useState)(null); 4504 const [isDeletingAddress, setIsDeletingAddress] = (0,react.useState)(false); 4505 const [mobileOverlaySelectedAddressId, setMobileOverlaySelectedAddressId] = (0,react.useState)(()=>selectedAddressId); 4506 const [notDeliverablePostalCode, setNotDeliverablePostalCode] = (0,react.useState)(null); 4507 (0,react.useEffect)(()=>{ 4508 setMobileOverlaySelectedAddressId(selectedAddressId); 4509 }, [ 4510 selectedAddressId 4511 ]); 4512 const closeNotDeliverableModal = (0,react.useCallback)(()=>{ 4513 setNotDeliverablePostalCode(null); 4514 setIsLoading(false); 4515 }, []); 4516 const isEditing = editingAddressId !== null || isNewAddress; 4517 const selectedAddress = (0,react.useMemo)(()=>{ 4518 if (selectedAddressId) { 4519 var _savedAddresses_find, _ref; 4520 return (_ref = (_savedAddresses_find = savedAddresses.find((a)=>a.id === selectedAddressId)) !== null && _savedAddresses_find !== void 0 ? _savedAddresses_find : shippingAddress) !== null && _ref !== void 0 ? _ref : null; 4521 } 4522 return shippingAddress || null; 4523 }, [ 4524 selectedAddressId, 4525 shippingAddress, 4526 savedAddresses 4527 ]); 4528 const [currentView, setCurrentView] = (0,react.useState)(()=>{ 4529 const hasSavedAddresses = savedAddresses.length > 0; 4530 const hasSelectedAddress = Boolean(selectedAddressId); 4531 if (hasSelectedAddress) return deliveryAddressSectionTypes.ADDRESS_VIEW.SELECTED; 4532 if (!isLoggedIn || !hasSavedAddresses) return deliveryAddressSectionTypes.ADDRESS_VIEW.FORM; 4533 return deliveryAddressSectionTypes.ADDRESS_VIEW.LIST; 4534 }); 4535 const { isFastlaneEnabledWithConfig } = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectOnePageCheckoutPaymentSelector */.n$); 4536 const editAddress = (0,react.useCallback)((addressId)=>{ 4537 setEditingAddressId(addressId); 4538 const address = savedAddresses.find((a)=>a.id === addressId); 4539 if (address) { 4540 setValue("shippingAddress", address); 4541 setValue("isNewAddress", false); 4542 } 4543 const isMilitaryAddress = getValues("shippingAddress.isMilitaryAddress"); 4544 shippingAddressSchema.SHIPPING_ADDRESS_ALL_FIELDS.forEach((field)=>{ 4545 const fieldName = "shippingAddress.".concat(field); 4546 if (fieldName === "shippingAddress.militaryAddrInstruction" && !isMilitaryAddress) { 4547 return; 4548 } 4549 setValue(fieldName, getValues(fieldName), { 4550 shouldTouch: true 4551 }); 4552 }); 4553 }, [ 4554 getValues, 4555 savedAddresses, 4556 setValue 4557 ]); 4558 const addNewAddress = (0,react.useCallback)(()=>{ 4559 setValue("isNewAddress", true); 4560 setValue("selectedAddressId", undefined); 4561 setValue("shippingAddress", address.EMPTY_SHIPPING_ADDRESS); 4562 setValue("shippingAddress.email", customerEmail, { 4563 shouldTouch: true 4564 }); 4565 setEditingAddressId(null); 4566 shippingAddressSchema.SHIPPING_ADDRESS_ALL_FIELDS.forEach((field)=>{ 4567 const fieldName = "shippingAddress.".concat(field); 4568 resetField(fieldName, { 4569 defaultValue: getValues(fieldName) 4570 }); 4571 }); 4572 }, [ 4573 customerEmail, 4574 getValues, 4575 resetField, 4576 setValue 4577 ]); 4578 const resetToSelectedView = (0,react.useCallback)((address, addressesToSave)=>{ 4579 setEditingAddressId(null); 4580 setValue("isNewAddress", false); 4581 if (address) { 4582 setValue("shippingAddress", address); 4583 var _address_id; 4584 setValue("selectedAddressId", (_address_id = address.id) !== null && _address_id !== void 0 ? _address_id : undefined); 4585 var _address_id1; 4586 setMobileOverlaySelectedAddressId((_address_id1 = address.id) !== null && _address_id1 !== void 0 ? _address_id1 : undefined); 4587 } 4588 if (isLoggedIn && addressesToSave) { 4589 setValue("savedAddresses", addressesToSave); 4590 } 4591 setCurrentView(deliveryAddressSectionTypes.ADDRESS_VIEW.SELECTED); 4592 }, [ 4593 setValue, 4594 isLoggedIn 4595 ]); 4596 const applyAddressResponseFromApi = (0,react.useCallback)((response)=>{ 4597 if (!response) return; 4598 (0,applyDeliveryWindowsFromApiResponse/* applyDeliveryWindowsFromApiResponse */.C)(response.windows, handlers, setValue); 4599 var _response_stores; 4600 setValue("fulfillmentStores", (_response_stores = response === null || response === void 0 ? void 0 : response.stores) !== null && _response_stores !== void 0 ? _response_stores : []);
4601 const addressFromResponse = response.address; 4602 if (!Array.isArray(addressFromResponse) || addressFromResponse.length === 0) { 4603 return; 4604 } 4605 const rawList = addressFromResponse; 4606 const selectedIndex = rawList.findIndex((a)=>a.selected === true); 4607 const stripped = rawList.map((a)=>{ 4608 const { selected: _sel, ...rest } = a; 4609 return rest; 4610 }); 4611 const normalizedAddresses = (0,deliveryAddressUtils/* ensureAddressIds */.A$)(stripped); 4612 var _normalizedAddresses_find; 4613 const addressToSelect = selectedIndex >= 0 ? normalizedAddresses[selectedIndex] : (_normalizedAddresses_find = normalizedAddresses.find((a)=>a.id === selectedAddressId)) !== null && _normalizedAddresses_find !== void 0 ? _normalizedAddresses_find : normalizedAddresses[0]; 4614 resetToSelectedView(addressToSelect, normalizedAddresses); 4615 }, [ 4616 handlers, 4617 resetToSelectedView, 4618 selectedAddressId, 4619 setValue 4620 ]); 4621 const handleSaveShippingAddressApiError = (0,react.useCallback)((postalCode)=>setNotDeliverablePostalCode(postalCode), []); 4622 const saveShippingAddress = (0,react.useCallback)(async (shippingAddressArg)=>{ 4623 const apiShippingAddress = shippingAddressArg ? shippingAddressArg : shippingAddress; 4624 if (!apiShippingAddress) { 4625 return; 4626 } 4627 setIsLoading(true); 4628 if (apiShippingAddress.id && /^addr-\d+$/.test(String(apiShippingAddress.id))) { 4629 delete apiShippingAddress.id; 4630 } 4631 const { defaultAddress, saveAddress, ...addressPayload } = apiShippingAddress; 4632 const isMilitaryAddress = Boolean(addressPayload.isMilitaryAddress); 4633 const normalizedAddressPayload = { 4634 ...addressPayload, 4635 isMilitaryAddress, 4636 militaryAddrInstruction: isMilitaryAddress ? addressPayload.militaryAddrInstruction || "" : "" 4637 }; 4638 try { 4639 const response = await handlers.saveShippingAddress({ 4640 address: normalizedAddressPayload, 4641 defaultAddress: defaultAddress !== null && defaultAddress !== void 0 ? defaultAddress : false, 4642 saveAddress: isLoggedIn ? true : false 4643 }); 4644 applyAddressResponseFromApi(response); 4645 setIsLoading(false); 4646 } catch (e) { 4647 const postalCode = apiShippingAddress.postalCode; 4648 handleSaveShippingAddressApiError(postalCode); 4649 } 4650 }, [ 4651 shippingAddress, 4652 handlers, 4653 isLoggedIn, 4654 applyAddressResponseFromApi, 4655 handleSaveShippingAddressApiError 4656 ]); 4657 const { setAddressFromFastlane, changeAddressFastlane } = useDeliveryFastlaneAddress({ 4658 setCurrentView, 4659 saveShippingAddress 4660 }); 4661 const changeAddress = (0,react.useCallback)(()=>{ 4662 if (isFastlaneEnabledWithConfig) { 4663 changeAddressFastlane(); 4664 return; 4665 } 4666 if (isLoggedIn) { 4667 setMobileOverlaySelectedAddressId(selectedAddressId); 4668 setCurrentView(deliveryAddressSectionTypes.ADDRESS_VIEW.LIST); 4669 } else { 4670 setCurrentView(deliveryAddressSectionTypes.ADDRESS_VIEW.FORM); 4671 } 4672 }, [ 4673 isFastlaneEnabledWithConfig, 4674 isLoggedIn, 4675 changeAddressFastlane, 4676 selectedAddressId 4677 ]); 4678 const clearShippingSelectionAfterDifferentZip = (0,react.useCallback)(()=>{ 4679 setValue("fulfillmentStores", []); 4680 setValue("selectedAddressId", undefined); 4681 setMobileOverlaySelectedAddressId(undefined); 4682 setEditingAddressId(null); 4683 if (isLoggedIn && savedAddresses.length > 0) { 4684 setCurrentView(deliveryAddressSectionTypes.ADDRESS_VIEW.LIST); 4685 } else { 4686 setValue("shippingAddress", address.EMPTY_SHIPPING_ADDRESS); 4687 setValue("isNewAddress", true); 4688 setCurrentView(deliveryAddressSectionTypes.ADDRESS_VIEW.FORM); 4689 } 4690 }, [ 4691 isLoggedIn, 4692 savedAddresses.length, 4693 setValue 4694 ]); 4695 const cancelAddressModal = ()=>{ 4696 setEditingAddressId(null); 4697 setValue("isNewAddress", false); 4698 }; 4699 const selectAddress = (0,react.useCallback)(async (addressId)=>{ 4700 const address = savedAddresses.find((a)=>a.id === addressId); 4701 if (address) { 4702 var _address_address2, _address_email; 4703 const addressToSave = { 4704 ...address, 4705 address2: (_address_address2 = address.address2) !== null && _address_address2 !== void 0 ? _address_address2 : "", 4706 email: (_address_email = address.email) !== null && _address_email !== void 0 ? _address_email : "" 4707 }; 4708 if (addressToSave.id && /^addr-\d+$/.test(String(addressToSave.id))) { 4709 delete addressToSave.id; 4710 } 4711 const { defaultAddress, saveAddress, ...addressPayload } = addressToSave; 4712 setIsLoading(true); 4713 try { 4714 const response = await handlers.saveShippingAddress({ 4715 address: addressPayload, 4716 defaultAddress: defaultAddress !== null && defaultAddress !== void 0 ? defaultAddress : false, 4717 saveAddress: true 4718 }); 4719 setEditingAddressId(null); 4720 applyAddressResponseFromApi(response); 4721 setIsLoading(false); 4722 } catch (e) { 4723 const postalCode = addressToSave.postalCode; 4724 handleSaveShippingAddressApiError(postalCode); 4725 setNotDeliverablePostalCode(postalCode); 4726 } 4727 } 4728 }, [ 4729 savedAddresses, 4730 handlers, 4731 applyAddressResponseFromApi, 4732 handleSaveShippingAddressApiError 4733 ]); 4734 const handleAddressSelect = (0,react.useCallback)((addressId)=>{ 4735 if (isMobileWidth) { 4736 setMobileOverlaySelectedAddressId(addressId); 4737 return; 4738 } 4739 void selectAddress(addressId); 4740 }, [ 4741 isMobileWidth, 4742 selectAddress 4743 ]); 4744 const selectedListAddressId = isMobileWidth ? mobileOverlaySelectedAddressId : selectedAddressId; 4745 const selectAddressFromMobileOverlay = (0,react.useCallback)(async ()=>{ 4746 if (!mobileOverlaySelectedAddressId) { 4747 return; 4748 } 4749 if (mobileOverlaySelectedAddressId !== selectedAddressId) { 4750 await selectAddress(mobileOverlaySelectedAddressId); 4751 return; 4752 } 4753 setCurrentView(deliveryAddressSectionTypes.ADDRESS_VIEW.SELECTED); 4754 }, [ 4755 mobileOverlaySelectedAddressId, 4756 selectAddress, 4757 selectedAddressId 4758 ]); 4759 const initiateDeleteAddress = (0,react.useCallback)((addressId)=>{ 4760 setAddressIdToDelete(addressId); 4761 }, []); 4762 const cancelDeleteAddress = (0,react.useCallback)(()=>{ 4763 setAddressIdToDelete(null); 4764 }, []); 4765 const confirmDeleteAddress = (0,react.useCallback)(async ()=>{ 4766 if (!addressIdToDelete || isDeletingAddress) { 4767 return; 4768 } 4769 setIsDeletingAddress(true); 4770 try { 4771 await (0,customerApi/* deleteCustomerAddress */.VR)(addressIdToDelete, true); 4772 const remainingAddresses = savedAddresses.filter((address)=>address.id !== addressIdToDelete); 4773 setValue("savedAddresses", remainingAddresses); 4774 if (selectedAddressId === addressIdToDelete) { 4775 setValue("selectedAddressId", undefined); 4776 } 4777 if (mobileOverlaySelectedAddressId === addressIdToDelete) { 4778 setMobileOverlaySelectedAddressId(undefined); 4779 } 4780 setCurrentView(remainingAddresses.length > 0 ? deliveryAddressSectionTypes.ADDRESS_VIEW.LIST : deliveryAddressSectionTypes.ADDRESS_VIEW.FORM); 4781 } catch (error) { 4782 (0,snackbarHandlers/* axiosErrorHandler */.ri)({ 4783 error 4784 }); 4785 } finally{ 4786 setIsDeletingAddress(false); 4787 setAddressIdToDelete(null); 4788 } 4789 }, [ 4790 addressIdToDelete, 4791 isDeletingAddress, 4792 mobileOverlaySelectedAddressId, 4793 savedAddresses, 4794 selectedAddressId, 4795 setValue 4796 ]); 4797 const getStoreDetailsAndZipcode = (0,react.useCallback)(async ()=>{ 4798 var _getValues; 4799 const fulfillmentStores = getValues("fulfillmentStores"); 4800 const storeDetails = fulfillmentStores === null || fulfillmentStores === void 0 ? void 0 : fulfillmentStores[0]; 4801 const zipcode = (_getValues = getValues("shippingAddress")) === null || _getValues === void 0 ? void 0 : _getValues.postalCode; 4802 return { 4803 storeDetails, 4804 zipcode 4805 }; 4806 }, [ 4807 getValues 4808 ]); 4809 return { 4810 savedAddresses, 4811 isLoading, 4812 selectedAddress, 4813 isEditing, 4814 editingAddressId, 4815 addressIdToDelete, 4816 isDeletingAddress, 4817 isNewAddress, 4818 selectedAddressId, 4819 mobileOverlaySelectedAddressId, 4820 selectedListAddressId, 4821 currentView, 4822 setCurrentView, 4823 selectAddress, 4824 handleAddressSelect, 4825 selectAddressFromMobileOverlay, 4826 initiateDeleteAddress, 4827 cancelDeleteAddress, 4828 confirmDeleteAddress, 4829 changeAddress, 4830 editAddress, 4831 addNewAddress, 4832 resetToSelectedView, 4833 saveShippingAddress, 4834 notDeliverablePostalCode, 4835 closeNotDeliverableModal, 4836 clearShippingSelectionAfterDifferentZip, 4837 getStoreDetailsAndZipcode, 4838 setAddressFromFastlane, 4839 changeAddressFastlane, 4840 cancelAddressModal, 4841 setIsLoading 4842 }; 4843}; 4844 4845;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/shippingAddressSection/deliveryAddressSection/index.ts 4846 4847 4848// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/components/one-page-checkout/AddressSection/constants/index.js 4849var constants = __webpack_require__(291650); 4850// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/components/one-page-checkout/AddressSection/utils/index.js 4851var utils = __webpack_require__(782330); 4852// EXTERNAL MODULE: ./src/lib/store/cartSlice.ts + 1 modules 4853var cartSlice = __webpack_require__(484725); 4854;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/shippingAddressSection/pickupAddressSection/usePickupMap.ts 4855 4856 4857 4858 4859const usePickupMap = (param)=>{ 4860 let { selectedStore } = param; 4861 const { setValue, watch } = (0,one_page_checkout/* useGetOpcFormValues */.BC)(); 4862 var _watch; 4863 const pickupStores = (_watch = watch("pickupStores")) !== null && _watch !== void 0 ? _watch : []; 4864 const distance = watch("searchPickupStore.distance"); 4865 const selectStore = (0,react.useCallback)((storeId, options)=>{ 4866 var _options_scrollIntoView; 4867 const shouldScrollIntoView = (_options_scrollIntoView = options === null || options === void 0 ? void 0 : options.scrollIntoView) !== null && _options_scrollIntoView !== void 0 ? _options_scrollIntoView : false;
4868 const nextPickupStores = pickupStores.map((store)=>({ 4869 ...store, 4870 selected: store.id === storeId 4871 })); 4872 setValue("pickupStores", nextPickupStores, { 4873 shouldDirty: options === null || options === void 0 ? void 0 : options.shouldDirty 4874 }); 4875 if (shouldScrollIntoView) { 4876 requestAnimationFrame(()=>{ 4877 var _document_getElementById; 4878 (_document_getElementById = document.getElementById((0,utils.getPickupStoreListItemId)(storeId))) === null || _document_getElementById === void 0 ? void 0 : _document_getElementById.scrollIntoView({ 4879 behavior: "smooth", 4880 block: "nearest" 4881 }); 4882 }); 4883 } 4884 }, [ 4885 pickupStores, 4886 setValue 4887 ]); 4888 const locations = (0,react.useMemo)(()=>pickupStores.reduce((result, store)=>{ 4889 const lat = Number(store.location.latitude); 4890 const lng = Number(store.location.longitude); 4891 result.push({ 4892 id: store.id, 4893 lat, 4894 lng 4895 }); 4896 return result; 4897 }, []), [ 4898 pickupStores 4899 ]); 4900 const center = (0,react.useMemo)(()=>{ 4901 if (!selectedStore) { 4902 var _locations_; 4903 return (_locations_ = locations[0]) !== null && _locations_ !== void 0 ? _locations_ : null; 4904 } 4905 var _locations_find, _ref; 4906 return (_ref = (_locations_find = locations.find((location)=>location.id === selectedStore.id)) !== null && _locations_find !== void 0 ? _locations_find : locations[0]) !== null && _ref !== void 0 ? _ref : null; 4907 }, [ 4908 locations, 4909 selectedStore 4910 ]); 4911 var _MAP_ZOOM_BY_DISTANCE_distance; 4912 const mapZoom = distance ? (_MAP_ZOOM_BY_DISTANCE_distance = constants.MAP_ZOOM_BY_DISTANCE[distance]) !== null && _MAP_ZOOM_BY_DISTANCE_distance !== void 0 ? _MAP_ZOOM_BY_DISTANCE_distance : 10 : 10; 4913 return { 4914 locations, 4915 center, 4916 mapZoom, 4917 selectStore 4918 }; 4919}; 4920 4921// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/lib/onePageCheckout/schemas/checkout/pickupAddressSchema.js 4922var pickupAddressSchema = __webpack_require__(323839); 4923;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/shippingAddressSection/pickupAddressSection/useSelfPickup.ts 4924 4925 4926 4927 4928 4929 4930const useSelfPickup = (param)=>{ 4931 let { submitInitialPickupFormForLoggedIn, submitPickupAddressForm, currentView } = param; 4932 var _customer_addressList; 4933 const isSelfPickupSubmitInitialDetailsDone = (0,react.useRef)(false); 4934 const { setValue, trigger, getValues, watch } = (0,one_page_checkout/* useGetOpcFormValues */.BC)(); 4935 const fulfillmentType = watch("fulfillmentType"); 4936 const { pickUpAvailability, deliveryAvailability } = (0,context.useLocationContext)(); 4937 const customer = (0,context.useCustomerContext)(); 4938 const hasAddress = (0,react.useMemo)(()=>{ 4939 var _customer_addressList; 4940 return !!(customer === null || customer === void 0 ? void 0 : (_customer_addressList = customer.addressList) === null || _customer_addressList === void 0 ? void 0 : _customer_addressList.length); 4941 }, [ 4942 customer === null || customer === void 0 ? void 0 : (_customer_addressList = customer.addressList) === null || _customer_addressList === void 0 ? void 0 : _customer_addressList.length 4943 ]); 4944 const isShowSelfPickupCheckbox = hasAddress && customer.isLoggedIn; 4945 const setCustomDefaultAddressAsPickupAddress = (0,react.useCallback)(()=>{ 4946 const defaultAddressPhoneNumber = (0,utils.getDefaultAddressPhoneNumber)(customer.addressList); 4947 const pickupAddress = { 4948 firstName: customer.firstName, 4949 lastName: customer.lastName, 4950 email: customer.email, 4951 phone: defaultAddressPhoneNumber, 4952 isSelfPickup: true 4953 }; 4954 setValue("pickupAddress", pickupAddress); 4955 setValue("savedPickupAddress", pickupAddress); 4956 return { 4957 pickupAddress 4958 }; 4959 }, [ 4960 customer.addressList, 4961 customer.email, 4962 customer.firstName, 4963 customer.lastName, 4964 setValue 4965 ]); 4966 (0,react.useEffect)(()=>{ 4967 const isPickupSelected = pickUpAvailability && (fulfillmentType === "pickup" || !deliveryAvailability); 4968 if (!isSelfPickupSubmitInitialDetailsDone.current && isPickupSelected && isShowSelfPickupCheckbox) { 4969 setValue("pickupAddress.isSelfPickup", true); 4970 isSelfPickupSubmitInitialDetailsDone.current = true; 4971 const { pickupAddress } = setCustomDefaultAddressAsPickupAddress(); 4972 submitInitialPickupFormForLoggedIn(pickupAddress); 4973 } 4974 }, [ 4975 submitInitialPickupFormForLoggedIn, 4976 setValue, 4977 fulfillmentType, 4978 pickUpAvailability, 4979 deliveryAvailability, 4980 isShowSelfPickupCheckbox, 4981 setCustomDefaultAddressAsPickupAddress 4982 ]); 4983 const verifyAndTouchAllFieldsForSelfPickup = (0,react.useCallback)(()=>{ 4984 pickupAddressSchema.PICKUP_ADDRESS_ALL_FIELDS.forEach((field)=>{ 4985 const fieldName = "pickupAddress.".concat(field); 4986 setValue(fieldName, getValues(fieldName), { 4987 shouldTouch: true 4988 }); 4989 }); 4990 trigger("pickupAddress"); 4991 }, [ 4992 getValues, 4993 setValue, 4994 trigger 4995 ]); 4996 const onSelfPickupCheckboxClick = (0,react.useCallback)((checkedState)=>{ 4997 if (checkedState === false) { 4998 verifyAndTouchAllFieldsForSelfPickup(); 4999 return; 5000 } 5001 setCustomDefaultAddressAsPickupAddress(); 5002 if (currentView === constants.PICKUP_ADDRESS_VIEW.SELECTED) { 5003 submitPickupAddressForm(); 5004 } 5005 }, [ 5006 currentView, 5007 setCustomDefaultAddressAsPickupAddress, 5008 submitPickupAddressForm, 5009 verifyAndTouchAllFieldsForSelfPickup 5010 ]); 5011 return { 5012 onSelfPickupCheckboxClick, 5013 isShowSelfPickupCheckbox, 5014 verifyAndTouchAllFieldsForSelfPickup 5015 }; 5016}; 5017 5018;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/shippingAddressSection/pickupAddressSection/useSubmitPickupForm.ts 5019 5020 5021 5022 5023 5024const useSubmitPickupForm = (param)=>{ 5025 let { selectedStore, currentView, setCurrentView, handlers, initializeCheckoutPickup } = param;
5026 const [isSubmittingPickupDetails, setIsSubmittingPickupDetails] = (0,react.useState)(false); 5027 const { getValues, setValue } = (0,one_page_checkout/* useGetOpcFormValues */.BC)(); 5028 const submitPickupAddressForm = (0,react.useCallback)(async ()=>{ 5029 try { 5030 if (currentView === constants.PICKUP_ADDRESS_VIEW.STORE_LIST) { 5031 setCurrentView(constants.PICKUP_ADDRESS_VIEW.LOADING); 5032 } 5033 setIsSubmittingPickupDetails(true); 5034 const pickupAddress = getValues("pickupAddress"); 5035 const pickupAddressRequestDetails = (0,utils.getPickupAddressRequestDetails)(pickupAddress); 5036 const response = await handlers.saveOnePageCheckoutPickupDetails({ 5037 latitude: selectedStore.location.latitude, 5038 longitude: selectedStore.location.longitude, 5039 pickupDetails: pickupAddressRequestDetails 5040 }); 5041 setValue("searchPickupStore.searchedPostalCode", selectedStore.address.postalCode); 5042 setValue("searchPickupStore.postalCode", selectedStore.address.postalCode); 5043 setValue("pickupStores", response === null || response === void 0 ? void 0 : response.stores); 5044 (0,applyDeliveryWindowsFromApiResponse/* applyDeliveryWindowsFromApiResponse */.C)(response === null || response === void 0 ? void 0 : response.windows, handlers, setValue); 5045 setValue("savedPickupAddress", pickupAddress); 5046 setCurrentView(constants.PICKUP_ADDRESS_VIEW.SELECTED); 5047 setIsSubmittingPickupDetails(false); 5048 } catch (e) {} 5049 }, [ 5050 currentView, 5051 getValues, 5052 handlers, 5053 selectedStore === null || selectedStore === void 0 ? void 0 : selectedStore.address.postalCode, 5054 selectedStore === null || selectedStore === void 0 ? void 0 : selectedStore.location.latitude, 5055 selectedStore === null || selectedStore === void 0 ? void 0 : selectedStore.location.longitude, 5056 setCurrentView, 5057 setValue 5058 ]); 5059 const submitInitialPickupFormForLoggedIn = (0,react.useCallback)(async (pickupAddress)=>{ 5060 const pickupAddressRequestDetails = (0,utils.getPickupAddressRequestDetails)(pickupAddress); 5061 initializeCheckoutPickup({ 5062 loggedInCustomerPickupDetails: pickupAddressRequestDetails 5063 }); 5064 }, [ 5065 initializeCheckoutPickup 5066 ]); 5067 return { 5068 submitPickupAddressForm, 5069 submitInitialPickupFormForLoggedIn, 5070 isSubmittingPickupDetails 5071 }; 5072}; 5073 5074;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/shippingAddressSection/pickupAddressSection/usePickupAddressSection.ts 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084const usePickupAddressSection = (param)=>{ 5085 let { handlers, initializeCheckoutPickup } = param; 5086 const dispatch = (0,hooks/* useAppDispatch */.T)(); 5087 const { setValue, watch } = (0,one_page_checkout/* useGetOpcFormValues */.BC)(); 5088 const watchedPickupStores = watch("pickupStores"); 5089 const pickupStores = (0,react.useMemo)(()=>watchedPickupStores !== null && watchedPickupStores !== void 0 ? watchedPickupStores : [], [ 5090 watchedPickupStores 5091 ]); 5092 const isSelfPickup = watch("pickupAddress.isSelfPickup"); 5093 const savedPickupAddress = watch("savedPickupAddress"); 5094 const pickupAddress = watch("pickupAddress"); 5095 var _watch; 5096 const zipInputField = (_watch = watch("searchPickupStore.postalCode")) !== null && _watch !== void 0 ? _watch : ""; 5097 var _watch1; 5098 const searchedZipcode = (_watch1 = watch("searchPickupStore.searchedPostalCode")) !== null && _watch1 !== void 0 ? _watch1 : ""; 5099 const isPickupAddressSaved = (0,utils.isPickupAddressSameAsSaved)(pickupAddress, savedPickupAddress); 5100 const [currentView, setCurrentView] = (0,react.useState)(constants.PICKUP_ADDRESS_VIEW.SELECTED); 5101 const selectedStore = (0,react.useMemo)(()=>{ 5102 var _pickupStores_find, _ref; 5103 return (_ref = (_pickupStores_find = pickupStores.find((store)=>store.selected)) !== null && _pickupStores_find !== void 0 ? _pickupStores_find : pickupStores[0]) !== null && _ref !== void 0 ? _ref : null; 5104 }, [ 5105 pickupStores 5106 ]); 5107 (0,react.useEffect)(()=>{ 5108 if (selectedStore) { 5109 // Todo: Fix this type error 5110 dispatch((0,cartSlice/* setSelectedStore */.rp)(selectedStore)); 5111 } 5112 }, [ 5113 dispatch, 5114 selectedStore 5115 ]); 5116 const { locations, center, mapZoom, selectStore } = usePickupMap({ 5117 selectedStore 5118 });
5119 const { submitPickupAddressForm, isSubmittingPickupDetails, submitInitialPickupFormForLoggedIn } = useSubmitPickupForm({ 5120 selectedStore, 5121 setCurrentView, 5122 currentView, 5123 handlers, 5124 initializeCheckoutPickup 5125 }); 5126 const { onSelfPickupCheckboxClick, isShowSelfPickupCheckbox, verifyAndTouchAllFieldsForSelfPickup } = useSelfPickup({ 5127 submitInitialPickupFormForLoggedIn, 5128 submitPickupAddressForm, 5129 currentView 5130 }); 5131 const onChangeAddress = (0,react.useCallback)(()=>{ 5132 setValue("savedPickupAddress", null); 5133 if (isSelfPickup) { 5134 verifyAndTouchAllFieldsForSelfPickup(); 5135 } 5136 setCurrentView(constants.PICKUP_ADDRESS_VIEW.STORE_LIST); 5137 }, [ 5138 isSelfPickup, 5139 setValue, 5140 verifyAndTouchAllFieldsForSelfPickup 5141 ]); 5142 var _selectedStore_id; 5143 return { 5144 pickupStores, 5145 selectedStore, 5146 selectedStoreId: (_selectedStore_id = selectedStore === null || selectedStore === void 0 ? void 0 : selectedStore.id) !== null && _selectedStore_id !== void 0 ? _selectedStore_id : null, 5147 zipInputField, 5148 locations, 5149 center, 5150 mapZoom, 5151 selectStore, 5152 currentView, 5153 setCurrentView, 5154 onChangeAddress, 5155 isSelfPickup, 5156 isShowSelfPickupCheckbox, 5157 submitPickupAddressForm, 5158 isSubmittingPickupDetails, 5159 onSelfPickupCheckboxClick, 5160 searchedZipcode, 5161 isPickupAddressSaved 5162 }; 5163}; 5164 5165;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/shippingAddressSection/pickupAddressSection/index.ts 5166 5167 5168;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/shippingAddressSection/index.ts 5169 5170 5171 5172 5173 5174;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/shippingScheduleSelector/useScheduleSelector.ts 5175 5176 5177const useScheduleSelector = (param)=>{ 5178 let { handlers } = param; 5179 const { setValue, watch } = (0,one_page_checkout/* useGetOpcFormValues */.BC)(); 5180 const schedule = watch("schedule"); 5181 var _watch; 5182 const availableWindows = (_watch = watch("availableWindows")) !== null && _watch !== void 0 ? _watch : []; 5183 const [isExpanded, setIsExpanded] = (0,react.useState)(false); 5184 const [activeDateId, setActiveDateId] = (0,react.useState)(""); 5185 const [isUpdatingDeliveryWindow, setIsUpdatingDeliveryWindow] = (0,react.useState)(false); 5186 const handleSelectWindow = (0,react.useCallback)(async (timeSlot)=>{ 5187 try { 5188 setIsUpdatingDeliveryWindow(true); 5189 await handlers.updateDeliveryWindow({ 5190 deliveryWindowId: Number(timeSlot.id) 5191 }); 5192 setValue("schedule", { 5193 selectedWindowId: timeSlot.id, 5194 selectedWindow: { 5195 ...timeSlot, 5196 isSelected: true 5197 } 5198 }); 5199 setIsExpanded(false); 5200 } catch (error) { 5201 console.error("Error updating delivery window:", error); 5202 } finally{ 5203 setIsUpdatingDeliveryWindow(false); 5204 } 5205 }, [ 5206 setValue, 5207 handlers 5208 ]); 5209 const selectedWindow = schedule === null || schedule === void 0 ? void 0 : schedule.selectedWindow; 5210 const selectedDay = (0,react.useMemo)(()=>{ 5211 if (!selectedWindow) return availableWindows[0]; 5212 return availableWindows.find((day)=>day.availableTimes.some((time)=>time.id === selectedWindow.id)); 5213 }, [ 5214 availableWindows, 5215 selectedWindow 5216 ]); 5217 const activeDay = (0,react.useMemo)(()=>availableWindows.find((day)=>day.id === activeDateId), [ 5218 availableWindows, 5219 activeDateId 5220 ]); 5221 (0,react.useEffect)(()=>{ 5222 if ((!activeDateId || !activeDay) && selectedDay) {
5223 setActiveDateId(selectedDay.id); 5224 } 5225 }, [ 5226 activeDateId, 5227 activeDay, 5228 selectedDay 5229 ]); 5230 return { 5231 schedule, 5232 availableWindows, 5233 isExpanded, 5234 activeDateId, 5235 selectedWindow, 5236 selectedDay, 5237 activeDay, 5238 isUpdatingDeliveryWindow, 5239 setIsExpanded, 5240 setActiveDateId, 5241 handleSelectWindow 5242 }; 5243}; 5244 5245;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/shippingScheduleSelector/index.ts 5246 5247 5248// EXTERNAL MODULE: ./src/components/one-page-checkout/hooks/useDeliveryWindowSession.ts 5249var useDeliveryWindowSession = __webpack_require__(833075); 5250// EXTERNAL MODULE: ./src/components/one-page-checkout/utils/createOnePageCheckoutHandlers.ts + 1 modules 5251var createOnePageCheckoutHandlers = __webpack_require__(707635); 5252;// CONCATENATED MODULE: ./src/components/one-page-checkout/hooks/useOnePageCheckoutHandlers.ts 5253/** 5254 * @file useOnePageCheckoutHandlers Hook 5255 * @description Creates one page checkout handler implementations 5256 */ 5257 5258 5259const useOnePageCheckoutHandlers = (param)=>{ 5260 let { storeFulfillmentWithInventoryCheck, inventoryCheckForPickup } = param; 5261 const { getDeliveryWindowSession, setDeliveryWindowSession } = (0,useDeliveryWindowSession/* useDeliveryWindowSession */.i)(); 5262 const handlers = (0,react.useMemo)(()=>(0,createOnePageCheckoutHandlers/* createOnePageCheckoutHandlers */.aD)({ 5263 storeFulfillmentWithInventoryCheck, 5264 inventoryCheckForPickup, 5265 getDeliveryWindowSession, 5266 setDeliveryWindowSession 5267 }), [ 5268 storeFulfillmentWithInventoryCheck, 5269 inventoryCheckForPickup, 5270 getDeliveryWindowSession, 5271 setDeliveryWindowSession 5272 ]); 5273 return { 5274 handlers 5275 }; 5276}; 5277/* harmony default export */ var hooks_useOnePageCheckoutHandlers = ((/* unused pure expression or super */ null && (useOnePageCheckoutHandlers))); 5278 5279// EXTERNAL MODULE: ./src/components/one-page-checkout/hooks/useStoreFulfillmentWithInventoryCheck.ts 5280var useStoreFulfillmentWithInventoryCheck = __webpack_require__(257778); 5281// EXTERNAL MODULE: ./src/lib/hooks/useInventory.ts 5282var useInventory = __webpack_require__(529511); 5283// EXTERNAL MODULE: ./src/lib/hooks/useMonthlyMembershipRate.ts 5284var useMonthlyMembershipRate = __webpack_require__(950169); 5285// EXTERNAL MODULE: ./src/lib/hooks/useUnavailableItems.ts 5286var useUnavailableItems = __webpack_require__(674244); 5287// EXTERNAL MODULE: ./src/lib/hooks/useYearlyMembershipRate.ts 5288var useYearlyMembershipRate = __webpack_require__(239610); 5289// EXTERNAL MODULE: ./src/lib/store/zipcodeSlice.tsx 5290var zipcodeSlice = __webpack_require__(480326); 5291;// CONCATENATED MODULE: ./src/components/providers/context/core-ui/OpcContextProvider.tsx 5292 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 5304 5305 5306 5307 5308 5309const OpcContextProvider = (param)=>{ 5310 let { children } = param; 5311 const { unavailableItems, showModal: showUnavailableItemsModal, removeItemsOutOfStockFromCart, removeRestrictedStateItemsFromCart, resetUnavailableItems, resetRestrictedStateItems, loading: unavailableItemsLoading, restrictedStateItems, continueToCheckoutWithRestrictedStateItems, keepShoppingWithRestrictedStateItems, findOutOfStockItems, setRestrictedStateItems } = (0,useUnavailableItems/* useUnavailableItems */.E)(); 5312 const { getInventoryList } = (0,useInventory/* useInventory */.m)(); 5313 const { storeFulfillmentWithInventoryCheck, inventoryCheckForPickup } = (0,useStoreFulfillmentWithInventoryCheck/* useStoreFulfillmentWithInventoryCheck */.rK)({ 5314 findOutOfStockItems, 5315 setRestrictedStateItems, 5316 getInventoryList 5317 }); 5318 const { handlers } = useOnePageCheckoutHandlers({ 5319 storeFulfillmentWithInventoryCheck, 5320 inventoryCheckForPickup 5321 }); 5322 const driverTipSelector = useTipSelector(); 5323 const shippingScheduleSelector = useScheduleSelector({ 5324 handlers 5325 }); 5326 const deliveryAddressSection = useDeliveryAddressSection({ 5327 handlers 5328 }); 5329 const { onlyMembershipItemInTheCart } = (0,context.useCartContext)(); 5330 const opcInitialization = useOpcInitialization({ 5331 skip: onlyMembershipItemInTheCart, 5332 handlers, 5333 setDeliveryCurrentView: deliveryAddressSection.setCurrentView, 5334 setAddressFromFastlane: deliveryAddressSection.setAddressFromFastlane 5335 }); 5336 const shippingAddressBase = useShippingAddress({ 5337 initializeCheckoutDelivery: opcInitialization.initializeCheckoutDelivery, 5338 initializeCheckoutPickup: opcInitialization.initializeCheckoutPickup, 5339 isInitializing: opcInitialization.isLoading, 5340 initializationError: opcInitialization.error 5341 }); 5342 const pickupAddressSection = usePickupAddressSection({ 5343 handlers, 5344 initializeCheckoutPickup: opcInitialization.initializeCheckoutPickup 5345 }); 5346 const isShowDigitalPaymentMethods = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectIsShowDigitalPaymentMethods */.LV); 5347 const opcPaymentSlice = (0,hooks/* useAppSelector */.C)(onePageCheckoutPaymentSlice/* selectOnePageCheckoutPaymentSelector */.n$); 5348 const { cardPayment, digitalWalletPayments, paymentDiscountCode, giftCardPayment } = (0,payment/* useOpcPayment */.a)(); 5349 const { regionId } = (0,hooks/* useAppSelector */.C)(zipcodeSlice/* ZipCodeSelector */.pz); 5350 const { rate: monthlyMembershipRate } = (0,useMonthlyMembershipRate/* useMonthlyMembershipRate */.W)(regionId); 5351 const { rate: annualMembershipRate } = (0,useYearlyMembershipRate/* useYearlyMembershipRate */.b)(regionId); 5352 const value = (0,react.useMemo)(()=>({ 5353 handlers, 5354 payment: { 5355 opcPaymentSlice, 5356 cardPayment, 5357 digitalWalletPayments, 5358 paymentDiscountCode, 5359 giftCardPayment, 5360 isShowDigitalPaymentMethods 5361 }, 5362 AddressVerificationModal: AddressVerificationModal/* default */.Z, 5363 productInventoryCheck: { 5364 unavailableItems, 5365 showModal: showUnavailableItemsModal, 5366 removeItemsOutOfStockFromCart, 5367 removeRestrictedStateItemsFromCart, 5368 resetUnavailableItems, 5369 resetRestrictedStateItems, 5370 unavailableItemsLoading, 5371 restrictedStateItems, 5372 continueToCheckoutWithRestrictedStateItems, 5373 keepShoppingWithRestrictedStateItems, 5374 getInventoryList 5375 }, 5376 membership: { 5377 monthlyMembershipRate, 5378 annualMembershipRate 5379 }, 5380 shippingAddressSection: { 5381 base: { 5382 isInitializing: opcInitialization.isLoading, 5383 initializationError: opcInitialization.error, 5384 membershipItemInTheCart: shippingAddressBase.membershipItemInTheCart, 5385 onlyMembershipItemInTheCart: shippingAddressBase.onlyMembershipItemInTheCart, 5386 fulfillmentType: shippingAddressBase.fulfillmentType, 5387 initializeCheckoutPickup: opcInitialization.initializeCheckoutPickup, 5388 initializeCheckoutDelivery: opcInitialization.initializeCheckoutDelivery, 5389 toggleSelectedDeliveryMethod: opcInitialization.toggleSelectedDeliveryMethod 5390 }, 5391 deliveryAddressSection, 5392 pickupAddressSection 5393 }, 5394 driverTipSelector, 5395 shippingScheduleSelector 5396 }), [ 5397 handlers, 5398 opcPaymentSlice, 5399 unavailableItems, 5400 showUnavailableItemsModal, 5401 removeItemsOutOfStockFromCart, 5402 removeRestrictedStateItemsFromCart, 5403 resetUnavailableItems, 5404 resetRestrictedStateItems, 5405 unavailableItemsLoading, 5406 restrictedStateItems, 5407 continueToCheckoutWithRestrictedStateItems, 5408 keepShoppingWithRestrictedStateItems, 5409 getInventoryList, 5410 cardPayment, 5411 digitalWalletPayments, 5412 paymentDiscountCode, 5413 giftCardPayment, 5414 isShowDigitalPaymentMethods, 5415 monthlyMembershipRate, 5416 annualMembershipRate, 5417 opcInitialization.isLoading, 5418 opcInitialization.error, 5419 opcInitialization.initializeCheckoutPickup, 5420 opcInitialization.initializeCheckoutDelivery, 5421 opcInitialization.toggleSelectedDeliveryMethod, 5422 shippingAddressBase.membershipItemInTheCart, 5423 shippingAddressBase.onlyMembershipItemInTheCart, 5424 shippingAddressBase.fulfillmentType, 5425 deliveryAddressSection, 5426 pickupAddressSection, 5427 driverTipSelector, 5428 shippingScheduleSelector 5429 ]); 5430 return /*#__PURE__*/ (0,jsx_runtime.jsx)(context.OpcContext.Provider, { 5431 value: value, 5432 children: children 5433 }); 5434}; 5435 5436 5437/***/ }), 5438 5439/***/ 877456: 5440/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 5441 5442"use strict"; 5443/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5444/* harmony export */ a: function() { return /* binding */ UIActionsContextProvider; } 5445/* harmony export */ }); 5446/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(785893); 5447/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(667294); 5448/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(93050); 5449/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_context__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wildfork_commercetools_core_ui_dist_src_lib_context__WEBPACK_IMPORTED_MODULE_2__); 5450/* harmony import */ var _Lib_store_findSimilarFlyoutSlice__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(670900); 5451/* harmony import */ var _Lib_store_hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(267097); 5452/* harmony import */ var _Lib_store_SnackBarSlice__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(529840); 5453/* harmony import */ var _Lib_store_zipcodeSlice__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(480326); 5454 5455 5456 5457 5458 5459 5460 5461const UIActionsContextProvider = (param)=>{ 5462 let { children } = param; 5463 const dispatch = (0,_Lib_store_hooks__WEBPACK_IMPORTED_MODULE_4__/* .useAppDispatch */ .T)(); 5464 const triggerSnackbar = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((message)=>{ 5465 dispatch((0,_Lib_store_SnackBarSlice__WEBPACK_IMPORTED_MODULE_5__/* .triggerSnackBar */ .qw)(message)); 5466 }, [ 5467 dispatch 5468 ]); 5469 const setSnackBarOpen = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((open)=>{ 5470 dispatch((0,_Lib_store_SnackBarSlice__WEBPACK_IMPORTED_MODULE_5__/* .setSnackBarOpen */ .TY)(open)); 5471 }, [ 5472 dispatch 5473 ]); 5474 const openZipcodePopup = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{ 5475 dispatch((0,_Lib_store_zipcodeSlice__WEBPACK_IMPORTED_MODULE_6__/* .setOpenZipcodePopup */ .Gu)()); 5476 }, [ 5477 dispatch 5478 ]); 5479 const openFindSimilarFlyout = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((sku)=>{ 5480 sku && dispatch(_Lib_store_findSimilarFlyoutSlice__WEBPACK_IMPORTED_MODULE_3__/* .findSimilarFlyoutActions */ .a0.toggleFindSimilarFlyout(sku)); 5481 }, [ 5482 dispatch 5483 ]); 5484 const openPrivacyPreferencePopup = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{ 5485 var _window_Osano; 5486 (_window_Osano = window.Osano) === null || _window_Osano === void 0 ? void 0 : _window_Osano.cm.showDrawer(); 5487 }, []); 5488 const contextValue = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>({ 5489 triggerSnackbar, 5490 setSnackBarOpen, 5491 openZipcodePopup, 5492 openFindSimilarFlyout, 5493 openPrivacyPreferencePopup 5494 }), [ 5495 openFindSimilarFlyout, 5496 openZipcodePopup, 5497 setSnackBarOpen, 5498 triggerSnackbar, 5499 openPrivacyPreferencePopup 5500 ]); 5501 return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_wildfork_commercetools_core_ui_dist_src_lib_context__WEBPACK_IMPORTED_MODULE_2__.UIActionsContext.Provider, { 5502 value: contextValue, 5503 children: children 5504 }); 5505}; 5506 5507 5508/***/ }), 5509 5510/***/ 889630: 5511/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 5512 5513"use strict"; 5514/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5515/* harmony export */ Z: function() { return /* binding */ Image; } 5516/* harmony export */ }); 5517/* unused harmony export customLoader */ 5518/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(785893); 5519/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(425675); 5520/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_image__WEBPACK_IMPORTED_MODULE_1__); 5521// components/Image.js 5522 5523 5524// opt-out of image optimization, no-op 5525const customLoader = (param)=>{ 5526 let { src } = param; 5527 return src; 5528}; 5529// interface style dom props 5530function Image(props) { 5531 if (!props.src) { 5532 return null; 5533 } 5534 /** 5535 * @NOTE The next image component doesn't accept a style attribute, but some 5536 * consumers of this component aren't following the rules! 5537 * 5538 * @Ref https://github.com/akiran/react-slick/blob/master/src/slider.js#L175 5539 * In this particular 3rd party component (react-slick), note the use of 5540 * cloneElement and the addition of a `style` property. This allows a 3rd party 5541 * component to add any properties they like. In this case, it is an error 5542 * because the component react-slick is cloning does not accept a `style` 5543 * property. 5544 * 5545 * The fix below removes any overidden style property that may have been added 5546 * using a technique like the one above. 5547 */ const { style, ...remaining } = props; 5548 return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)((next_image__WEBPACK_IMPORTED_MODULE_1___default()), { 5549 ...remaining, 5550 unoptimized: true, 5551 loader: customLoader 5552 }); 5553} 5554 5555 5556/***/ }), 5557 5558/***/ 317641: 5559/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 5560 5561"use strict"; 5562/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(785893); 5563/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(741664); 5564/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_1__); 5565 5566 5567/** 5568 * LinkComponent is a thin wrapper around the NextLink that allows the storefront 5569 * to specify useful default for the storefront. 5570 * 5571 * @param props {ILink} react props 5572 * @returns {React.ReactNode} React component. 5573 */ const LinkComponent = (props)=>{ 5574 const { children, ...rest } = props; 5575 return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), { 5576 ...rest, 5577 children: children 5578 }); 5579}; 5580/* harmony default export */ __webpack_exports__.Z = (LinkComponent); 5581 5582 5583/***/ }), 5584 5585/***/ 471691: 5586/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 5587 5588"use strict"; 5589/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5590/* harmony export */ As: function() { return /* binding */ useAccordion; }, 5591/* harmony export */ UQ: function() { return /* binding */ Accordion; } 5592/* harmony export */ }); 5593/* unused harmony export AccordionContext */ 5594/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(785893); 5595/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(667294); 5596/* harmony import */ var _Components_providers_context_helpers_contextFactory__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(151815); 5597/* harmony import */ var _Accordion_module_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(294784); 5598/* harmony import */ var _Accordion_module_scss__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_Accordion_module_scss__WEBPACK_IMPORTED_MODULE_3__); 5599 5600 5601 5602 5603const [useAccordion, AccordionContext] = (0,_Components_providers_context_helpers_contextFactory__WEBPACK_IMPORTED_MODULE_2__/* .contextFactory */ .b)(); 5604 5605function Accordion(param) { 5606 let { children, initialActiveItem, onActiv
5606eItemChange, className } = param; 5607 const [activeItem, setActiveItem] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(initialActiveItem); 5608 const setActiveItemHandler = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((item)=>{ 5609 setActiveItem(item); 5610 onActiveItemChange === null || onActiveItemChange === void 0 ? void 0 : onActiveItemChange(item); 5611 }, [ 5612 onActiveItemChange 5613 ]); 5614 const value = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>({ 5615 activeItem, 5616 setActiveItem: setActiveItemHandler 5617 }), [ 5618 activeItem, 5619 setActiveItemHandler 5620 ]); 5621 return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(AccordionContext.Provider, { 5622 value: value, 5623 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 5624 className: "".concat((_Accordion_module_scss__WEBPACK_IMPORTED_MODULE_3___default().accordion), " ").concat(className), 5625 children: children 5626 }) 5627 }); 5628} 5629 5630 5631/***/ }), 5632 5633/***/ 312843: 5634/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 5635 5636"use strict"; 5637 5638// EXPORTS 5639__webpack_require__.d(__webpack_exports__, { 5640 Q: function() { return /* binding */ AccordionItem; } 5641}); 5642 5643// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js 5644var jsx_runtime = __webpack_require__(785893); 5645// EXTERNAL MODULE: ./src/components/ui/accordion/Accordion.tsx 5646var Accordion = __webpack_require__(471691); 5647// EXTERNAL MODULE: ./src/components/ui/accordion/AccordionItemContent.module.scss 5648var AccordionItemContent_module = __webpack_require__(648466); 5649var AccordionItemContent_module_default = /*#__PURE__*/__webpack_require__.n(AccordionItemContent_module); 5650;// CONCATENATED MODULE: ./src/components/ui/accordion/AccordionItemContent.tsx 5651 5652 5653function AccordionItemContent(param) { 5654 let { children, value, className } = param; 5655 return /*#__PURE__*/ (0,jsx_runtime.jsx)(jsx_runtime.Fragment, { 5656 children: /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { 5657 className: value === "PickUp" ? "".concat((AccordionItemContent_module_default())["accordion-item-content-pickup"], " ").concat(className) : "".concat((AccordionItemContent_module_default())["accordion-item-content"], " ").concat(className), 5658 children: children 5659 }) 5660 }); 5661} 5662 5663// EXTERNAL MODULE: ./src/components/ui/accordion/AccordionItemHeader.module.scss 5664var AccordionItemHeader_module = __webpack_require__(675730); 5665var AccordionItemHeader_module_default = /*#__PURE__*/__webpack_require__.n(AccordionItemHeader_module); 5666;// CONCATENATED MODULE: ./src/components/ui/accordion/AccordionItemHeader.tsx 5667 5668 5669const AccordionItemHeader = (param)=>{ 5670 let { children, onChange, isActive, value, disabled, theme = "red" } = param; 5671 return /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", { 5672 className: "".concat(value === "PickUp" && isActive ? (AccordionItemHeader_module_default())["accordion-item-header-pickup"] : (AccordionItemHeader_module_default())["accordion-item-header"], " ").concat(disabled ? (AccordionItemHeader_module_default())["accordion-item-header--disabled"] : ""), 5673 onClick: onChange, 5674 role: "presentation", 5675 children: [ 5676 /*#__PURE__*/ (0,jsx_runtime.jsx)("input", { 5677 type: "radio", 5678 className: (AccordionItemHeader_module_default())["input-radio"], 5679 onChange: onChange, 5680 checked: isActive 5681 }), 5682 /*#__PURE__*/ (0,jsx_runtime.jsx)("span", { 5683 className: (AccordionItemHeader_module_default())["checkmark-".concat(theme)] 5684 }), 5685 /*#__PURE__*/ (0,jsx_runtime.jsx)(jsx_runtime.Fragment, { 5686 children: children 5687 }) 5688 ] 5689 }); 5690}; 5691 5692;// CONCATENATED MODULE: ./src/components/ui/accordion/AccordionItem.tsx 5693 5694 5695 5696 5697const AccordionItem = (param)=>{ 5698 let { className, content, disabled = false, header, theme, value, onChange } = param; 5699 const { activeItem, setActiveItem } = (0,Accordion/* useAccordion */.As)(); 5700 const setActiveItemHandler = ()=>{ 5701 if (disabled) return;
5702 setActiveItem(value); 5703 if (onChange) { 5704 onChange(); 5705 } 5706 }; 5707 const isActive = activeItem === value; 5708 return /*#__PURE__*/ (0,jsx_runtime.jsxs)(jsx_runtime.Fragment, { 5709 children: [ 5710 /*#__PURE__*/ (0,jsx_runtime.jsx)(AccordionItemHeader, { 5711 isActive: isActive, 5712 onChange: setActiveItemHandler, 5713 theme: isActive ? theme : "white", 5714 value: value, 5715 disabled: disabled, 5716 children: header 5717 }), 5718 isActive && content && /*#__PURE__*/ (0,jsx_runtime.jsx)(AccordionItemContent, { 5719 value: activeItem, 5720 className: className, 5721 children: content 5722 }) 5723 ] 5724 }); 5725}; 5726 5727 5728/***/ }), 5729 5730/***/ 596411: 5731/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 5732 5733"use strict"; 5734/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5735/* harmony export */ z: function() { return /* binding */ Button; } 5736/* harmony export */ }); 5737/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(785893); 5738/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_constants_locale__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(808439); 5739/* harmony import */ var _Button_module_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(150424); 5740/* harmony import */ var _Button_module_scss__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_Button_module_scss__WEBPACK_IMPORTED_MODULE_2__); 5741/* eslint-disable react/button-has-type */ 5742 5743 5744const Button = (param)=>{ 5745 let { children, className = "", type = "button", value, disabled = false, onClick, ...restProps } = param; 5746 const languageCode = _wildfork_commercetools_core_ui_dist_src_lib_constants_locale__WEBPACK_IMPORTED_MODULE_1__.LANGUAGE_CODE; 5747 let styles = {}; 5748 // @ts-ignore 5749 if (languageCode !== "en-CA" && languageCode !== "fr-CA") { 5750 styles = { 5751 borderRadius: "10rem" 5752 }; // squared corners for US, rounded for CA 5753 } else { 5754 styles = { 5755 borderRadius: "10rem" 5756 }; // squared corners for US, rounded for CA 5757 } 5758 if (restProps === null || restProps === void 0 ? void 0 : restProps.style) { 5759 styles = { 5760 ...styles, 5761 ...restProps.style 5762 }; // overrides 5763 } 5764 return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", { 5765 className: "".concat((_Button_module_scss__WEBPACK_IMPORTED_MODULE_2___default().btn), " ").concat(className), 5766 value: value, 5767 type: type, 5768 disabled: disabled, 5769 onClick: onClick, 5770 ...restProps, 5771 style: { 5772 ...styles 5773 }, 5774 children: children 5775 }); 5776}; 5777 5778 5779/***/ }), 5780 5781/***/ 336930: 5782/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 5783 5784"use strict"; 5785/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5786/* harmony export */ z: function() { return /* reexport safe */ _Button__WEBPACK_IMPORTED_MODULE_0__.z; } 5787/* harmony export */ }); 5788/* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(596411); 5789 5790 5791 5792/***/ }), 5793 5794/***/ 694139: 5795/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 5796 5797"use strict"; 5798/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5799/* harmony export */ z: function() { return /* reexport safe */ _button__WEBPACK_IMPORTED_MODULE_0__.z; } 5800/* harmony export */ }); 5801/* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(336930); 5802 5803 5804 5805/***/ }), 5806 5807/***/ 836455: 5808/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 5809 5810"use strict"; 5811 5812// EXPORTS 5813__webpack_require__.d(__webpack_exports__, { 5814 UQ: function() { return /* reexport */ Accordion/* Accordion */.UQ; }, 5815 Qd: function() { return /* reexport */ AccordionItem/* AccordionItem */.Q; }, 5816 zx: function() { return /* reexport */ buttons/* Button */.z; }, 5817 Ph: function() { return /* reexport */ Select; }, 5818 nv: function() { return /* reexport */ TextField; } 5819}); 5820 5821// UNUSED EXPORTS: AccordionContext, useAccordion 5822 5823// EXTERNAL MODULE: ./src/components/ui/accordion/Accordion.tsx 5824var Accordion = __webpack_require__(471691); 5825// EXTERNAL MODULE: ./src/components/ui/accordion/AccordionItem.tsx + 2 modules 5826var AccordionItem = __webpack_require__(312843); 5827;// CONCATENATED MODULE: ./src/components/ui/accordion/index.ts 5828 5829 5830 5831// EXTERNAL MODULE: ./src/components/ui/buttons/index.ts 5832var buttons = __webpack_require__(694139); 5833// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js 5834var jsx_runtime = __webpack_require__(785893); 5835// EXTERNAL MODULE: ./node_modules/react/index.js 5836var react = __webpack_require__(667294); 5837// EXTERNAL MODULE: ./node_modules/uuid/dist/esm-browser/v4.js + 4 modules 5838var v4 = __webpack_require__(825934); 5839// EXTERNAL MODULE: ./src/components/ui/select/Select.module.scss 5840var Select_module = __webpack_require__(814102); 5841var Select_module_default = /*#__PURE__*/__webpack_require__.n(Select_module); 5842;// CONCATENATED MODULE: ./src/components/ui/select/Select.tsx 5843 5844 5845 5846 5847const Select = (param)=>{ 5848 let { options, error, selected, disabled = false, label = "", id, color = "grey", validate, className = "", required = false, meta, ...rest } = param; 5849 // Generate unique IDs for the select and error message 5850 const { selectId, errorId } = (0,react.useMemo)(()=>{ 5851 const baseId = id || rest.name || "select-".concat((0,v4/* default */.Z)()); 5852 return { 5853 selectId: baseId, 5854 errorId: "".concat(baseId, "-error") 5855 }; 5856 }, [ 5857 id, 5858 rest.name 5859 ]); 5860 const groupedOptions = {}; 5861 if ((options === null || options === void 0 ? void 0 : options.length) && options.every((o)=>o.optgroup)) { 5862 options.forEach((option)=>{ 5863 if (!groupedOptions[option.optgroup]) groupedOptions[option.optgroup] = []; 5864 groupedOptions[option.optgroup].push({ 5865 value: option.value, 5866 text: option.text 5867 }); 5868 }); 5869 } 5870 const renderOptions = (options)=>{ 5871 const optionsMarkup = options === null || options === void 0 ? void 0 : options.map((option, index)=>{ 5872 return /*#__PURE__*/ (0,jsx_runtime.jsx)("option", { 5873 value: option.value, 5874 disabled: !!option.disabled, 5875 children: option.text 5876 }, "".concat(option.value, "-").concat(index)); 5877 }); 5878 optionsMarkup === null || optionsMarkup === void 0 ? void 0 : optionsMarkup.unshift(/*#__PURE__*/ (0,jsx_runtime.jsx)("option", { 5879 style: { 5880 display: "none" 5881 }, 5882 children: label 5883 }, "".concat(options.length, "-").concat(label))); 5884 return optionsMarkup; 5885 }; 5886 const onChangeHandler = (e)=>{ 5887 if (rest.onChange) { 5888 rest.onChange(e); 5889 } 5890 }; 5891 const isValid = validate && typeof validate === "function" ? validate(selected) : validate === null || validate === undefined ? true : validate; 5892 return /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", { 5893 className: "".concat((Select_module_default())["select-container"], " ").concat(color && isValid && (Select_module_default())["input-".concat(color)], " ").concat(className), 5894 children: [ 5895 /*#__PURE__*/ (0,jsx_runtime.jsx)("label", { 5896 htmlFor: selectId, 5897 className: required ? (Select_module_default()).required : "", 5898 children: label 5899 }), 5900 /*#__PURE__*/ (0,jsx_runtime.jsx)("select", { 5901 autoComplete: (rest === null || rest === void 0 ? void 0 : rest.autoComplete) || "on", 5902 disabled: disabled, 5903 value: selected, 5904 id: selectId, 5905 onChange: onChangeHandler, 5906 onBlur: rest === null || rest === void 0 ? void 0 : rest.onBlur, 5907 name: rest.name, 5908 "data-testid": rest["data-testid"], 5909 className: disabled ? (Select_module_default())["disabled-select"] : "", 5910 "aria-describedby": !!error || !isValid && required ? errorId : undefined, 5911 children: Object.keys(groupedOptions).length ? Object.keys(groupedOptions).map((group, index)=>{ 5912 return /*#__PURE__*/ (0,jsx_runtime.jsx)("optgroup", { 5913 label: group, 5914 children: renderOptions(groupedOptions[group]) 5915 }, "".concat(group, "-").concat(index)); 5916 }) : renderOptions(options) 5917 }), 5918 !!error && /*#__PURE__*/ (0,jsx_runtime.jsx)("span", { 5919 id: errorId, 5920 className: (Select_module_default())["error-text"], 5921 children: error 5922 }), 5923 !isValid && required && /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", { 5924 id: errorId, 5925 className: (Select_module_default())["error-text"], 5926 children: [ 5927 "Invalid ", 5928 label 5929 ] 5930 }) 5931 ] 5932 }); 5933}; 5934 5935;// CONCATENATED MODULE: ./src/components/ui/select/index.ts 5936 5937 5938// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/components/
5938atoms/Icon/Icon.js 5939var Icon = __webpack_require__(882074); 5940// EXTERNAL MODULE: ./src/components/ui/text-field/TextField.module.scss 5941var TextField_module = __webpack_require__(850765); 5942var TextField_module_default = /*#__PURE__*/__webpack_require__.n(TextField_module); 5943// EXTERNAL MODULE: ./node_modules/@mui/material/Tooltip/Tooltip.js 5944var Tooltip = __webpack_require__(721023); 5945// EXTERNAL MODULE: ./src/components/ui/Image/Image.tsx 5946var Image = __webpack_require__(889630); 5947;// CONCATENATED MODULE: ./src/components/ui/iconTooltip/IconTooltip.tsx 5948 5949 5950 5951 5952const IconTooltip = (param)=>{ 5953 let { data, icon = "questionMark", height = 20, width = 20, id = "tooltip-icon" } = param; 5954 const iconLinks = { 5955 lock: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABmJLR0QA/wD/AP+gvaeTAAABSUlEQVRIie3TvUrDYBTG8f8JhC51cKmDdZLeh85+TO5uaZauegtKB4XSYhrMBThVKoj3oKObW7s4iOAHGdL0uEQo2vq29K2D5lkSXk6eXw4k8N8iswz7vl9K07QmIttABXgH7oFuoVA4bzQaL9bharW6p6oRsDRh5FFV98MwvJmmz5kBvcjQjqpuxHFcjOO46DjOpqpeAisicuV53tY0ncaNfd8vDYfDhww9aLfb9Qkvd6iqR8Cz67qVZrP59FOvceM0TWsZ2pmEAgRBcAx0geUkSWqmXiMsIjsAqnpqmgVOsuvu3DCwDuC67p1pcDAY3Ga3FRtwEaDVar2ZBqMoeh19Zl54Ifn2VWe/QwCsWjL6quqFYXg9ejhu4zOLKEBZRIKvh+PgskX0M2vTwL+SHM7hHM7hvwH3F+D0jLCqepbxnoh4FvvyzJYP8RhrounhCHMAAAAASUVORK5CYII=", 5956 questionMark: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABmJLR0QA/wD/AP+gvaeTAAAFsUlEQVRoge1aW2gUZxT+zmR3/yxbba1o7YUiVZtaEB9CBTESim1sS6Eolj60aRPrTnaDKw1KKT4U+lQSLAFTktlZL0vjQyHoQ+/R0jZqH0QqBaESo6LUglpNl0rWncnOnD7shclmb3NJ44MfBP7zz/nPOV/mv5zzzwIPcH+BvDIUjUYXGYbRSkQbTNN8nohWAFgKIJRXmQJwk5mvSJL0B4DTmqaNJZPJlBf+XRGJxWIik8lsI6J3AWwC0GDThAHgBIBhIcTRgYEBzWksjoj09PQE0+l0lJl3A3jCqfMS/AVgn67rSjKZzNgdbJtIOBx+lYgGAKywO7ZOXGLmnYlEYtTOoLqJxGIxoWlaH4BdtkNzhuFQKNTV399/rx7luojs2LHjsYaGhm+ZudldbLZxVpKk1xVFuVVLsSaRSCSy3DTNEwBWehKafUxIktSmKMrVakpViXR2di7x+/2nADR5Gpp9XPb5fC2Dg4M3KilIlR50dHQ0BgKB7zH/JABgRTab/SoWi4lKChWJ+P3+/nlYE9XwgqZp+yo9LDu18lvsdy4dpwGcBHCRme8R0VIA6wE859LuZlVVj5d2ziLS09MTnJqaOg/n54RBRH2apvWVSz9kWW4B8DmAtQ7tTwgh1pRmAbOmVjqdjsI5iSwzvxmPx/dWyqFUVT0dCoXWAxhz6GNVJpOJlHbOeCP5Q+8KHKYdzNybSCQ+KsiyLL8IYCuAh4no93Q6HR8eHp4CgO7u7mXZbHYCwEMOXF0XQqy0vpUZbySTyWxzSgJA2ufz9RaEcDi8B8BPAHYCaGfmz4LB4G/bt29fAACDg4M3mPmIQ19P6bq+1doxg0g+i3UEZv5laGjoHwCQZflpIvq0jFqT3+/vtsg/u/DXbpWLRKLR6CLkUnFHkCRpgSzLbZFI5EkAbwHwldMzTXOtZUzFA64OvByLxRYWhKIzwzBaYb+eKIKZNwIYNU2zqh4R3bGIi5z6A+DTdb0VwNfAzKnV4sJovTCZ+YuCwMwb3BjL//MAWIgw82o3RuvEUCKROAsA7e3tIQDvubRXPFyLRIholUujtXBNCLG3IASDwY+Rq+nd4NlCwzq1HnVptBqykiS9PTAw8C8ARCKRDQB2e2B3caFhJbLAA8NlQUSfKIryKwB0dHQ8YprmEbjYWCwoxlwx+/UQJycnJ4tnit/vTwBY7rUTK5G7XhtH7rpn58jIiAEAXV1d7xPRNg/tF2O2ErlTRtEVmHlUVdXzQO7AZebeWmNs4nahYSUy4bETENF4oZ3NZtfBsjg9QjFm6/Z7wWMnAGCtGR6fA/vFmK350GkAe7z0QkRN4XD4pXzb87KZmU8V2kUimqaNBQIBA95siwVHW4hoi1f2SjDd2Nh4siAUp1YymUwR0Y9z5HQucLxwwAIlqXY+odvslSci+ga5KQtmbgLQ6ZXt0qJsxoEohDiK3K24JzBN88t4PN4bj8d7iWjQK7sArqdSqWPWjhlE8jVwxbuj+wVE1DcyMqJb+2alKLquKwAu/W9R2cd4IBBQSzsrXdBtJqIfPHA6AeBavr0Ezu+yCmBmbkskErM2pbJb7blz5y43NzcvAbDOpePFAJ7J/y1zaQtEtF9V1bJrrWL2K4TYDeCsW+ce4szk5OSHlR5WJJJf+K8BGK+k8z/ismmab5QucCuq1iOqqt6WJOkVzEFCaQMXDcPYdODAgZvVlGoWVoqiXJUkqQXzM83OTE9Ptxw8ePBaLcW6KkRFUW4JITYC2A+A3UZXJ1QhROvhw4f/rkfZ9udpWZbbkPssMFe3LuP5z9O28j7bNbuqqseFEGuY+QMA1+2Or4I/iWiXEGKtXRKABz/h0HV9q2ma7xBRGyrc91ZBFsAoMx9JpVLHqu1KteDZj2pisdhCXddbmXkjEa1m5pXIneaFK5u7AG4hl/5cYOZThmGMHTp0aC4uPR5g3vEfVuoAYgQRSrAAAAAASUVORK5CYII=" 5957 }; 5958 const imageSRC = icon ? iconLinks[icon] : iconLinks["lock"]; 5959 const [isMounted, setIsMounted] = (0,react.useState)(false); 5960 (0,react.useEffect)(()=>{ 5961 setIsMounted(true); 5962 }, []); 5963 if (!isMounted) { 5964 return null; 5965 } 5966 return /*#__PURE__*/ (0,jsx_runtime.jsx)(Tooltip/* default */.Z, { 5967 title: /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { 5968 dangerouslySetInnerHTML: { 5969 __html: data 5970 } 5971 }), 5972 arrow: true, 5973 placement: "top", 5974 children: /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { 5975 children: /*#__PURE__*/ (0,jsx_runtime.jsx)(Image/* default */.Z, { 5976 id: id, 5977 src: imageSRC, 5978 height: height, 5979 width: width, 5980 alt: "tooltip icon", 5981 "data-tip": data 5982 }) 5983 }) 5984 }); 5985}; 5986 5987;// CONCATENATED MODULE: ./src/components/ui/iconTooltip/index.ts 5988 5989 5990;// CONCATENATED MODULE: ./src/components/ui/text-field/TextField.tsx 5991/* eslint-disable */ 5992 5993 5994 5995 5996 5997// The standard TextField validation logic returns true when valid and returns false when invalid 5998const validateTextField = (param)=>{ 5999 let { validate, value, isValid } = param; 6000 isValid = validate && typeof validate === "function" ? //@ts-ignore 6001 validate(value) === undefined || validate(value) === null : validate === null || validate === undefined ? true : validate; // else just use whatever truthy/falsey value is passed to directly represent valid/invalid 6002 return isValid; 6003}; 6004// FormTextField validation logic returns undefined when valid and returns an error string when invalid 6005const validateFormTextField = (param)=>{ 6006 let { validate, value, isValid } = param; 6007 isValid = validate && typeof validate === "function" ? validate(value) : validate === null || validate === undefined || validate; // else just use whatever truthy/falsey value is passed to directly represent valid/invalid 6008 return isValid; 6009}; 6010const TextField = /*#__PURE__*/ react.forwardRef((param, ref)=>{ 6011 let { className, color = "grey", dirty, formTextFieldValidation = false, id, inputProps = {}, label = "", showTooltipIconOnErrorOnly, style, supressErrorStylesOnFocus = false, tooltipData = "", tooltipIcon, touched = true, type = "text", validate, validateOnDirty, withPreview = false, required, isDisabled, autoComplete, multiline, ...rest } = param; 6012 const [inputType, setInputType] = (0,react.useState)(type); 6013 // Generate unique IDs for the input and error message 6014 const { inputId, errorId } = (0,react.useMemo)(()=>{ 6015 const baseId = id || rest.name || "textfield-".concat((0,v4/* default */.Z)()); 6016 return { 6017 inputId: baseId, 6018 errorId: "".concat(baseId, "-error") 6019 }; 6020 }, [ 6021 id, 6022 rest.name 6023 ]); 6024 let value = rest === null || rest === void 0 ? void 0 : rest.value; 6025 if (!value && ref != null && typeof ref !== "function") { 6026 var _ref_current; 6027 value = ref === null || ref === void 0 ? void 0 : (_ref_current = ref.current) === null || _ref_current === void 0 ? void 0 : _ref_current.value; 6028 } 6029 let isValid = true; 6030 const isDirtyWhenValidateOnDirty = validateOnDirty && dirty; 6031 const isFieldTouchedOrDirty = touched || isDirtyWhenValidateOnDirty; 6032 if (isFieldTouchedOrDirty) { 6033 isValid = validateFormTextField({ 6034 isValid, 6035 validate, 6036 value 6037 }); 6038 } 6039 const shouldShowError = isFieldTouchedOrDirty && (typeof isValid === "string" && isValid || typeof isValid === "boolean" && !isValid); 6040 const classNames = [ 6041 (TextField_module_default())["input-container"], 6042 className, 6043 (typeof isValid === "boolean" && !isValid || typeof isValid === "string" && isValid) && (TextField_module_default()).error, 6044 color && (isValid || supressErrorStylesOnFocus) && (TextField_module_default())["input-".concat(color)] 6045 ].join(" ").trim(); 6046 const handleIconClick = ()=>{ 6047 if (withPreview) { 6048 setInputType(inputType === "password" ? "text" : "password"); 6049 } 6050 }; 6051 return /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", { 6052 className: classNames, 6053 style: style, 6054 children: [ 6055 /*#__PURE__*/ (0,jsx_runtime.jsx)("label", { 6056 className: required ? (TextField_module_default()).required : "", 6057 htmlFor: inputId, 6058 children: label 6059 }), 6060 multiline ? /*#__PURE__*/ (0,jsx_runtime.jsx)("textarea", { 6061 ...rest, 6062 id: inputId, 6063 type: inputType, 6064 ref: ref, 6065 ...inputProps, 6066 autoComplete: autoComplete || "on", 6067 disabled: isDisabled, 6068 rows: 4, 6069 className: isDisabled ? (TextField_module_default())["disabled-text-feild"] : "", 6070 "aria-describedby": shouldShowError ? errorId : undefined 6071 }) : /*#__PURE__*/ (0,jsx_runtime.jsx)("input", { 6072 ...rest, 6073 id: inputId, 6074 type: inputType, 6075 ref: ref, 6076 ...inputProps, 6077 autoComplete: autoComplete || "on", 6078 disabled: isDisabled, 6079 className: isDisabled ? (TextField_module_default())["disabled-text-feild"] : "", 6080 "aria-describedby": shouldShowError ? errorId : undefined 6081 }), 6082 typeof isValid === "string" && isValid && isFieldTouchedOrDirty && /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { 6083 id: errorId, 6084 className: (TextField_module_default())["error-text"], 6085 children: isValid 6086 }), 6087 typeof isValid == "boolean" && !isValid && isFieldTouchedOrDirty && /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { 6088 id: errorId, 6089 className: (TextField_module_default())["error-text"], 6090 children: "Invalid ".concat(label) 6091 }), 6092 withPreview && /*#__PURE__*/ (0,jsx_runtime.jsx)(Icon.Icon, { 6093 iconName: inputType === "password" ? "eye-cross" : "eye", 6094 className: "".concat((TextField_module_default()).previewicon, " ").concat(inputType !== "password" ? (TextField_module_default())["previewicon--show"] : ""), 6095 "aria-label": "Password Preview", 6096 onClick: handleIconClick 6097 }), 6098 /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { 6099 className: (TextField_module_default()).tooltip, 6100 children: tooltipData && (!showTooltipIconOnErrorOnly || showTooltipIconOnErrorOnly && !isValid) && /*#__PURE__*/ (0,jsx_runtime.jsx)(IconTooltip, { 6101 data: tooltipData, 6102 icon: tooltipIcon 6103 }) 6104 }) 6105 ] 6106 }); 6107}); 6108TextField.displayName = "TextField"; 6109 6110;// CONCATENATED MODULE: ./src/components/ui/text-field/index.ts 6111 6112 6113;// CONCATENATED MODULE: ./src/components/ui/index.ts 6114 6115 6116 6117 6118 6119 6120/***/ }), 6121 6122/***/ 451415: 6123/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6124 6125"use strict"; 6126/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6127/* harmony export */ u: function() { return /* binding */ Modal; } 6128/* harmony export */ }); 6129/* unused harmony export MODAL_ROOT_ID */ 6130/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(785893); 6131/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(667294); 6132/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(973935); 6133/* harmony import */ var _Modal_module_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(527013); 6134/* harmony import */ var _Modal_module_scss__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_Modal_module_scss__WEBPACK_IMPORTED_MODULE_3__); 6135/* eslint-disable jsx-a11y/anchor-is-valid */ 6136 6137 6138
6139const MODAL_ROOT_ID = "modal-root"; 6140const Modal = (param)=>{ 6141 let { show, onClose, children, title = "", className = "", contentClassName = "", withCloseIcon = true, onCloseOuterClick = true } = param; 6142 const [isMounted, setIsMounted] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false); 6143 const modalWrapperRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null); 6144 const backDropHandler = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((e)=>{ 6145 var _modalWrapperRef_current; 6146 if (!(modalWrapperRef === null || modalWrapperRef === void 0 ? void 0 : (_modalWrapperRef_current = modalWrapperRef.current) === null || _modalWrapperRef_current === void 0 ? void 0 : _modalWrapperRef_current.contains(e.target)) && onCloseOuterClick) { 6147 onClose(); 6148 } 6149 }, [ 6150 onClose, 6151 onCloseOuterClick 6152 ]); 6153 (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{ 6154 setIsMounted(true); 6155 window.addEventListener("click", backDropHandler); 6156 window.addEventListener("keydown", (event)=>{ 6157 if (event.key === "Escape" && onCloseOuterClick) { 6158 onClose(); 6159 } 6160 }); 6161 return ()=>{ 6162 window.removeEventListener("click", backDropHandler); 6163 window.removeEventListener("keydown", ()=>{}); 6164 }; 6165 }, [ 6166 backDropHandler, 6167 onClose, 6168 onCloseOuterClick 6169 ]); 6170 const handleCloseClick = (e)=>{ 6171 e.preventDefault(); 6172 onClose === null || onClose === void 0 ? void 0 : onClose(); 6173 }; 6174 const modalContent = show ? /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 6175 className: "".concat((_Modal_module_scss__WEBPACK_IMPORTED_MODULE_3___default().modal), " ").concat(className), 6176 "data-testid": MODAL_ROOT_ID, 6177 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 6178 className: (_Modal_module_scss__WEBPACK_IMPORTED_MODULE_3___default().modal__wrapper), 6179 ref: modalWrapperRef, 6180 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", { 6181 className: "".concat((_Modal_module_scss__WEBPACK_IMPORTED_MODULE_3___default().modal__layout), " ").concat(contentClassName), 6182 children: [ 6183 withCloseIcon && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 6184 className: (_Modal_module_scss__WEBPACK_IMPORTED_MODULE_3___default().modal__header), 6185 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 6186 className: (_Modal_module_scss__WEBPACK_IMPORTED_MODULE_3___default().modal__close), 6187 onClick: handleCloseClick, 6188 children: "x" 6189 }) 6190 }), 6191 title && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", { 6192 children: title 6193 }), 6194 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 6195 className: (_Modal_module_scss__WEBPACK_IMPORTED_MODULE_3___default().modal__body), 6196 children: children 6197 }) 6198 ] 6199 }) 6200 }) 6201 }) : null; 6202 if (isMounted) { 6203 return /*#__PURE__*/ react_dom__WEBPACK_IMPORTED_MODULE_2__.createPortal(modalContent, document.getElementById("modal-root")); 6204 } 6205 return null; 6206}; 6207 6208 6209/***/ }), 6210 6211/***/ 589863: 6212/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6213 6214"use strict"; 6215/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6216/* harmony export */ u: function() { return /* reexport safe */ _Modal__WEBPACK_IMPORTED_MODULE_0__.u; } 6217/* harmony export */ }); 6218/* harmony import */ var _Modal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(451415); 6219 6220 6221 6222/***/ }), 6223 6224/***/ 866067: 6225/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6226 6227"use strict"; 6228/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6229/* harmony export */ v: function() { return /* binding */ OrderEventType; } 6230/* harmony export */ }); 6231/* harmony import */ var mitt__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(59391); 6232 6233var OrderEventType; 6234(function(OrderEventType) { 6235 OrderEventType["ORDER_SUBMIT_FAILED"] = "orderSubmitFailed"; 6236})(OrderEventType || (OrderEventType = {})); 6237const emitter = (0,mitt__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z)(); 6238/* harmony default export */ __webpack_exports__.Z = (emitter); 6239 6240
6241/***/ }), 6242 6243/***/ 5227: 6244/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6245 6246"use strict"; 6247/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6248/* harmony export */ G: function() { return /* binding */ formStateChangeHandler; } 6249/* harmony export */ }); 6250const formStateChangeHandler = (param)=>{ 6251 let { key, value, formState, setTouched, formStateSetter } = param; 6252 setTouched(true); 6253 formStateSetter({ 6254 ...formState, 6255 [key]: value 6256 }); 6257}; 6258 6259 6260/***/ }), 6261 6262/***/ 593917: 6263/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6264 6265"use strict"; 6266/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6267/* harmony export */ FI: function() { return /* binding */ authFormFieldValidatorSwitch; }, 6268/* harmony export */ pO: function() { return /* binding */ useForgotPassword; } 6269/* harmony export */ }); 6270/* unused harmony exports initialForgotPasswordState, initialCheckoutLoginState, defaultCheckoutSignupState, initialCheckoutSignupState, authFormValidators, useLogin, useSignup */ 6271/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(667294); 6272/* harmony import */ var _Lib_helpers_forms_FieldValidator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(348833); 6273 6274// import { isCanadianLocale } from '@Constants/locale'; 6275 6276// import { useAppSelector } from '@Lib/store/hooks'; 6277const initialForgotPasswordState = { 6278 email: "" 6279}; 6280const initialCheckoutLoginState = { 6281 ...initialForgotPasswordState, 6282 password: "" 6283}; 6284const defaultCheckoutSignupState = { 6285 ...initialCheckoutLoginState, 6286 firstName: "", 6287 lastName: "", 6288 confirmedPassword: "", 6289 acceptMarketing: true 6290}; 6291const initialCheckoutSignupState = ()=>{ 6292 const defaultState = { 6293 ...defaultCheckoutSignupState 6294 }; 6295 // defaultState.acceptMarketing = !isCanadianLocale(locale) ? true : false; 6296 defaultState.acceptMarketing = true; 6297 return defaultState; 6298}; 6299const authFormValidator = (value, fieldValidator)=>{ 6300 const validator = fieldValidator; 6301 const validatorResult = validator(value, {}); 6302 return validatorResult === undefined; 6303}; 6304const ifErrorMsgThenRenderIt = (errors, key)=>{ 6305 return errors && Object.keys(errors).length ? errors[key] : undefined; 6306}; 6307// helper function for consolidating the login/signup validation logic into a single place 6308const authFormFieldValidatorSwitch = (key, errorMessages)=>{ 6309 let validator; 6310 switch(key){ 6311 case "email": 6312 validator = (0,_Lib_helpers_forms_FieldValidator__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .ZP)([ 6313 (0,_Lib_helpers_forms_FieldValidator__WEBPACK_IMPORTED_MODULE_1__/* .required */ .C1)(ifErrorMsgThenRenderIt(errorMessages, "required")), 6314 (0,_Lib_helpers_forms_FieldValidator__WEBPACK_IMPORTED_MODULE_1__/* .email */ .Do)(ifErrorMsgThenRenderIt(errorMessages, "email")) 6315 ], "Email"); 6316 break; 6317 case "password": 6318 validator = (0,_Lib_helpers_forms_FieldValidator__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .ZP)([ 6319 (0,_Lib_helpers_forms_FieldValidator__WEBPACK_IMPORTED_MODULE_1__/* .required */ .C1)(ifErrorMsgThenRenderIt(errorMessages, "required")) 6320 ], "Password"); 6321 break; 6322 case "strong_password": 6323 validator = (0,_Lib_helpers_forms_FieldValidator__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .ZP)([ 6324 (0,_Lib_helpers_forms_FieldValidator__WEBPACK_IMPORTED_MODULE_1__/* .required */ .C1)(ifErrorMsgThenRenderIt(errorMessages, "required")), 6325 (0,_Lib_helpers_forms_FieldValidator__WEBPACK_IMPORTED_MODULE_1__/* .strongPassword */ .hG)(ifErrorMsgThenRenderIt(errorMessages, "password")) 6326 ], "Password"); 6327 break; 6328 case "firstName": 6329 validator = (0,_Lib_helpers_forms_FieldValidator__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .ZP)([ 6330 (0,_Lib_helpers_forms_FieldValidator__WEBPACK_IMPORTED_MODULE_1__/* .required */ .C1)(ifErrorMsgThenRenderIt(errorMessages, "required")), 6331 (0,_Lib_helpers_forms_FieldValidator__WEBPACK_IMPORTED_MODULE_1__/* .name */ .u2)() 6332 ], "First Name"); 6333 break; 6334 case "lastName": 6335 validator = (0,_Lib_helpers_forms_FieldValidator__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .ZP)([ 6336 (0,_Lib_helpers_forms_FieldValidator__WEBPACK_IMPORTED_MODULE_1__/* .required */ .C1)(ifErrorMsgThenRenderIt(errorMessages, "required")), 6337 (0,_Lib_helpers_forms_FieldValidator__WEBPACK_IMPORTED_MODULE_1__/* .name */ .u2)() 6338 ], "Last Name"); 6339 break; 6340 default: 6341 validator = (0,_Lib_helpers_forms_FieldValidator__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .ZP)([ 6342 (0,_Lib_helpers_forms_FieldValidator__WEBPACK_IMPORTED_MODULE_1__/* .required */ .C1)() 6343 ]); 6344 break; 6345 } 6346 return validator; 6347}; 6348const authFormValidators = { 6349 email: (value)=>{ 6350 return authFormValidator(value, authFormFieldValidatorSwitch("email")); 6351 }, 6352 password: (value)=>{ 6353 return authFormValidator(value, authFormFieldValidatorSwitch("password")); 6354 }, 6355 firstName: (value)=>{ 6356 return authFormValidator(value, authFormFieldValidatorSwitch("firstName")); 6357 }, 6358 lastName: (value)=>{ 6359 return authFormValidator(value, authFormFieldValidatorSwitch("lastName")); 6360 } 6361}; 6362const useForgotPassword = ()=>{ 6363 const [forgotPasswordState, setForgotPasswordState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(initialForgotPasswordState); 6364 const forgotPasswordStateHandler = (key, value)=>{ 6365 setForgotPasswordState({ 6366 ...forgotPasswordState, 6367 [key]: value 6368 }); 6369 }; 6370 return { 6371 forgotPasswordState, 6372 setForgotPasswordState, 6373 forgotPasswordStateHandler 6374 }; 6375};
6376const useLogin = ()=>{ 6377 const [loginState, setLoginState] = useState(initialCheckoutLoginState); 6378 const loginStateHandler = (key, value)=>{ 6379 setLoginState({ 6380 ...loginState, 6381 [key]: value 6382 }); 6383 }; 6384 return { 6385 loginState, 6386 setLoginState, 6387 loginStateHandler 6388 }; 6389}; 6390const useSignup = (initialState)=>{ 6391 // const { locale } = useAppSelector((state) => state); 6392 const [signupState, setSignupState] = useState({ 6393 ...initialCheckoutSignupState(), 6394 ...initialState 6395 }); 6396 const signupStateHandler = (key, value)=>{ 6397 setSignupState({ 6398 ...signupState, 6399 [key]: value 6400 }); 6401 }; 6402 return { 6403 signupState, 6404 setSignupState, 6405 signupStateHandler 6406 }; 6407}; 6408 6409 6410/***/ }), 6411 6412/***/ 65353: 6413/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6414 6415"use strict"; 6416 6417// EXPORTS 6418__webpack_require__.d(__webpack_exports__, { 6419 r: function() { return /* binding */ useCartSubscription; } 6420}); 6421 6422// EXTERNAL MODULE: ./src/lib/configs/HeadersConfig.ts 6423var HeadersConfig = __webpack_require__(420957); 6424// EXTERNAL MODULE: ./src/api/api.ts 6425var api = __webpack_require__(445913); 6426// EXTERNAL MODULE: ./src/api/constants/RestEndpoints.ts 6427var RestEndpoints = __webpack_require__(179901); 6428;// CONCATENATED MODULE: ./src/api/cartSubscriptionApi.ts 6429 6430 6431 6432const updateSubscription = (interval)=>{ 6433 const headers = (0,HeadersConfig/* buildHeaders */.us)(HeadersConfig/* cartIdHeader */.ZK); 6434 return api/* default */.ZP.put(RestEndpoints/* default */.Z.CART.SUBSCRIPTION.PUT, { 6435 interval 6436 }, { 6437 headers 6438 }); 6439}; 6440const deleteSubscription = ()=>{ 6441 const headers = (0,HeadersConfig/* buildHeaders */.us)(HeadersConfig/* cartIdHeader */.ZK); 6442 return api/* default */.ZP.delete(RestEndpoints/* default */.Z.CART.SUBSCRIPTION.DELETE, { 6443 headers 6444 }); 6445}; 6446 6447// EXTERNAL MODULE: ./src/api/withAsync.ts 6448var withAsync = __webpack_require__(715904); 6449// EXTERNAL MODULE: ./src/lib/configs/environment.ts 6450var environment = __webpack_require__(208891); 6451// EXTERNAL MODULE: ./src/lib/store/cartSlice.ts + 1 modules 6452var cartSlice = __webpack_require__(484725); 6453// EXTERNAL MODULE: ./src/lib/store/hooks.ts 6454var hooks = __webpack_require__(267097); 6455// EXTERNAL MODULE: ./src/lib/utils/snackbarHandlers.ts 6456var snackbarHandlers = __webpack_require__(921134); 6457;// CONCATENATED MODULE: ./src/lib/hooks/useCartSubscription.ts 6458 6459 6460 6461 6462 6463 6464const DEFAULT_DELIVERY_SCHEDULE = 28; 6465const useCartSubscription = ()=>{ 6466 var _nextAppEnv_feature_toggle_US_autoship; 6467 const { subscription } = (0,hooks/* useAppSelector */.C)(cartSlice/* cartSliceSelector */.Ew); 6468 var _subscription_interval; 6469 const interval = (_subscription_interval = subscription === null || subscription === void 0 ? void 0 : subscription.interval) !== null && _subscription_interval !== void 0 ? _subscription_interval : 0; 6470 const autoship = interval > 0; 6471 const dispatch = (0,hooks/* useAppDispatch */.T)(); 6472 const handleAutoship = ()=>{ 6473 const newAutoshipValue = !autoship; 6474 if (newAutoshipValue) { 6475 dispatch((0,cartSlice/* setSubscriptionInterval */.kC)(DEFAULT_DELIVERY_SCHEDULE)); 6476 updateSubscriptionHandler(DEFAULT_DELIVERY_SCHEDULE); 6477 } else { 6478 dispatch((0,cartSlice/* setSubscriptionInterval */.kC)(0)); 6479 deleteSubscriptionHandler(); 6480 } 6481 }; 6482 const handleDeliverySchedule = (event)=>{ 6483 const value = event.target.value; 6484 updateSubscriptionHandler(Number(value)); 6485 }; 6486 const updateSubscriptionHandler = async (interval)=>{ 6487 const response = await (0,withAsync/* withAsync */.j)(()=>updateSubscription(interval)); 6488 responseHandler(response); 6489 }; 6490 const deleteSubscriptionHandler = async ()=>{ 6491 const response = await (0,withAsync/* withAsync */.j)(()=>deleteSubscription()); 6492 responseHandler(response); 6493 }; 6494 const responseHandler = (param)=>{ 6495 let { response, error } = param; 6496 var _response_data_subscription, _response_data; 6497 const intervalFromResponse = response === null || response === void 0 ? void 0 : (_response_data = response.data) === null || _response_data === void 0 ? void 0 : (_response_data_subscription = _response_data.subscription) === null || _response_data_subscription === void 0 ? void 0 : _response_data_subscription.interval; 6498 if (typeof intervalFromResponse === "number") { 6499 dispatch((0,cartSlice/* setSubscriptionInterval */.kC)(intervalFromResponse)); 6500 } 6501 if (error) { 6502 (0,snackbarHandlers/* axiosErrorHandler */.ri)({ 6503 error, 6504 dispatch 6505 }); 6506 } 6507 }; 6508 return { 6509 autoship, 6510 interval, 6511 showUIComponents: autoship && ((_nextAppEnv_feature_toggle_US_autoship = environment.nextAppEnv.feature_toggle.US.autoship) === null || _nextAppEnv_feature_toggle_US_autoship === void 0 ? void 0 : _nextAppEnv_feature_toggle_US_autoship.toLocaleLowerCase()) === "on", 6512 handleAutoship, 6513 handleDeliverySchedule, 6514 updateSubscriptionHandler, 6515 deleteSubscriptionHandler 6516 }; 6517}; 6518 6519 6520/***/ }), 6521 6522/***/ 519511: 6523/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6524 6525"use strict"; 6526/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6527/* harmony export */ Xl: function() { return /* binding */ useFormFieldValidation; }, 6528/* harmony export */ dz: function() { return /* binding */ FORM_TYPES; } 6529/* harmony export */ }); 6530/* unused harmony exports getFormErrorCodeMessage, getFormValidationMessage, getFormValidationErrorByLocale, resetFormActionActiveStatus, resetFormFieldErrorMessage */ 6531/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(667294); 6532/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_constants_locale__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(808439); 6533/* harmony import */ var _Constants_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(339114); 6534/* harmony import */ var _Lib_helpers_forms_FieldValidator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(348833); 6535/* harmony import */ var _Utils_errors__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(130642); 6536/* harmony import */ var _Utils_patterns__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(711091); 6537/* harmony import */ var _Utils_validation__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(928692); 6538/* harmony import */ var _wff_api_constants_error__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(635768); 6539 6540 6541 6542 6543 6544 6545 6546 6547const FORM_TYPES = { 6548 SIGNUP: "signup", 6549 LOGIN: "login", 6550 FORGOT_PASSWORD: "forgot_password", 6551 ACCOUNT_RESET: "account_reset" 6552}; 6553const getFormErrorCodeMessage = (param)=>{ 6554 let { error, errorCodeTranslation } = param; 6555 const formErrMsgs = [];
6556 Object.keys(errorCodeTranslation).forEach((key)=>{ 6557 const matchingError = (0,_Utils_errors__WEBPACK_IMPORTED_MODULE_4__/* .findErrorCode */ .pD)({ 6558 code: _wff_api_constants_error__WEBPACK_IMPORTED_MODULE_6__/* .ERROR_CODES */ .O[key], 6559 error 6560 }); 6561 if (matchingError) { 6562 if (typeof errorCodeTranslation[key] === "string") { 6563 var _errorCodeTranslation_key; 6564 formErrMsgs.push((_errorCodeTranslation_key = errorCodeTranslation[key]) !== null && _errorCodeTranslation_key !== void 0 ? _errorCodeTranslation_key : ""); 6565 } else { 6566 var _errorCodeTranslation_key1; 6567 var _errorCodeTranslation_key_message; 6568 formErrMsgs.push((_errorCodeTranslation_key_message = (_errorCodeTranslation_key1 = errorCodeTranslation[key]) === null || _errorCodeTranslation_key1 === void 0 ? void 0 : _errorCodeTranslation_key1.message) !== null && _errorCodeTranslation_key_message !== void 0 ? _errorCodeTranslation_key_message : ""); 6569 } 6570 } 6571 }); 6572 return formErrMsgs; 6573}; 6574const getFormValidationMessage = (param)=>{ 6575 let { type, formState, languageCode, validationTranslation } = param; 6576 const formErrMsgs = []; 6577 switch(languageCode){ 6578 case _wildfork_commercetools_core_ui_dist_src_lib_constants_locale__WEBPACK_IMPORTED_MODULE_1__.LOCALE.EN_US: 6579 case _wildfork_commercetools_core_ui_dist_src_lib_constants_locale__WEBPACK_IMPORTED_MODULE_1__.LOCALE.EN_CA: 6580 case _wildfork_commercetools_core_ui_dist_src_lib_constants_locale__WEBPACK_IMPORTED_MODULE_1__.LOCALE.FR_CA: 6581 case _wildfork_commercetools_core_ui_dist_src_lib_constants_locale__WEBPACK_IMPORTED_MODULE_1__.LOCALE.ES_MX: 6582 default: 6583 if (type === FORM_TYPES.SIGNUP && (0,_Utils_validation__WEBPACK_IMPORTED_MODULE_7__/* .areAllKeysPresent */ .Z1)([ 6584 _Constants_common__WEBPACK_IMPORTED_MODULE_2__/* .FORM_FIELD_KEYS */ .xh.EMAIL, 6585 _Constants_common__WEBPACK_IMPORTED_MODULE_2__/* .FORM_FIELD_KEYS */ .xh.PASSWORD, 6586 _Constants_common__WEBPACK_IMPORTED_MODULE_2__/* .FORM_FIELD_KEYS */ .xh.FIRST_NAME, 6587 _Constants_common__WEBPACK_IMPORTED_MODULE_2__/* .FORM_FIELD_KEYS */ .xh.FIRST_NAME 6588 ], formState) && !(formState === null || formState === void 0 ? void 0 : formState.email) && !(formState === null || formState === void 0 ? void 0 : formState.password) && !(formState === null || formState === void 0 ? void 0 : formState.firstName) && !(formState === null || formState === void 0 ? void 0 : formState.lastName)) { 6589 var _validationTranslation_allFieldsBlank; 6590 formErrMsgs.push((_validationTranslation_allFieldsBlank = validationTranslation === null || validationTranslation === void 0 ? void 0 : validationTranslation.allFieldsBlank) !== null && _validationTranslation_allFieldsBlank !== void 0 ? _validationTranslation_allFieldsBlank : ""); 6591 return formErrMsgs; 6592 } 6593 if ((0,_Utils_validation__WEBPACK_IMPORTED_MODULE_7__/* .areAllKeysPresent */ .Z1)([ 6594 _Constants_common__WEBPACK_IMPORTED_MODULE_2__/* .FORM_FIELD_KEYS */ .xh.PASSWORD, 6595 _Constants_common__WEBPACK_IMPORTED_MODULE_2__/* .FORM_FIELD_KEYS */ .xh.CONFIRM_PASSWORD 6596 ], formState) && (formState === null || formState === void 0 ? void 0 : formState.password) !== (formState === null || formState === void 0 ? void 0 : formState.confirmedPassword)) { 6597 var _validationTranslation_passwordsDoNotMatch; 6598 formErrMsgs.push((_validationTranslation_passwordsDoNotMatch = validationTranslation === null || validationTranslation === void 0 ? void 0 : validationTranslation.passwordsDoNotMatch) !== null && _validationTranslation_passwordsDoNotMatch !== void 0 ? _validationTranslation_passwordsDoNotMatch : ""); 6599 } 6600 if ((0,_Utils_validation__WEBPACK_IMPORTED_MODULE_7__/* .isKeyPresent */ .aH)(_Constants_common__WEBPACK_IMPORTED_MODULE_2__/* .FORM_FIELD_KEYS */ .xh.EMAIL, formState) && _Utils_patterns__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z.EMAIL_ENDS_WITH_AT.test(formState === null || formState === void 0 ? void 0 : formState.email)) { 6601 var _validationTranslation_emailNeedsContentAfterAtSymbol; 6602 formErrMsgs.push((_validationTranslation_emailNeedsContentAfterAtSymbol = validationTranslation === null || validationTranslation === void 0 ? void 0 : validationTranslation.emailNeedsContentAfterAtSymbol) !== null && _validationTranslation_emailNeedsContentAfterAtSymbol !== void 0 ? _validationTranslation_emailNeedsContentAfterAtSymbol : ""); 6603 } 6604 if ((0,_Utils_validation__WEBPACK_IMPORTED_MODULE_7__/* .isKeyPresent */ .aH)(_Constants_common__WEBPACK_IMPORTED_MODULE_2__/* .FORM_FIELD_KEYS */ .xh.EMAIL, formState) && !(0,_Lib_helpers_forms_FieldValidator__WEBPACK_IMPORTED_MODULE_3__/* .validEmail */ .u$)(formState === null || formState === void 0 ? void 0 : formState.email)) { 6605 var _validationTranslation_emailBlank; 6606 formErrMsgs.push((_validationTranslation_emailBlank = validationTranslation === null || validationTranslation === void 0 ? void 0 : validationTranslation.emailBlank) !== null && _validationTranslation_emailBlank !== void 0 ? _validationTranslation_emailBlank : ""); 6607 } 6608 if ((0,_Utils_validation__WEBPACK_IMPORTED_MODULE_7__/* .isKeyPresent */ .aH)(_Constants_common__WEBPACK_IMPORTED_MODULE_2__/* .FORM_FIELD_KEYS */ .xh.FIRST_NAME, formState) && !(0,_Lib_helpers_forms_FieldValidator__WEBPACK_IMPORTED_MODULE_3__/* .validName */ .kb)(formState === null || formState === void 0 ? void 0 : formState.firstName)) { 6609 var _validationTranslation_firstNameBlank; 6610 formErrMsgs.push((_validationTranslation_firstNameBlank = validationTranslation === null || validationTranslation === void 0 ? void 0 : validationTranslation.firstNameBlank) !== null && _validationTranslation_firstNameBlank !== void 0 ? _validationTranslation_firstNameBlank : ""); 6611 } 6612 if ((0,_Utils_validation__WEBPACK_IMPORTED_MODULE_7__/* .isKeyPresent */ .aH)(_Constants_common__WEBPACK_IMPORTED_MODULE_2__/* .FORM_FIELD_KEYS */ .xh.LAST_NAME, formState) && !(0,_Lib_helpers_forms_FieldValidator__WEBPACK_IMPORTED_MODULE_3__/* .validName */ .kb)(formState === null || formState === void 0 ? void 0 : formState.lastName)) { 6613 var _validationTranslation_lastNameBlank; 6614 formErrMsgs.push((_validationTranslation_lastNameBlank = validationTranslation === null || validationTranslation === void 0 ? void 0 : validationTranslation.lastNameBlank) !== null && _validationTranslation_lastNameBlank !== void 0 ? _validationTranslation_lastNameBlank : ""); 6615 } 6616 if (type === FORM_TYPES.LOGIN && (0,_Utils_validation__WEBPACK_IMPORTED_MODULE_7__/* .isKeyPresent */ .aH)(_Constants_common__WEBPACK_IMPORTED_MODULE_2__/* .FORM_FIELD_KEYS */ .xh.PASSWORD, formState) && !(0,_Lib_helpers_forms_FieldValidator__WEBPACK_IMPORTED_MODULE_3__/* .validPassword */ .hE)(formState === null || formState === void 0 ? void 0 : formState.password)) { 6617 var _validationTranslation_passwordBlank; 6618 formErrMsgs.push((_validationTranslation_passwordBlank = validationTranslation === null || validationTranslation === void 0 ? void 0 : validationTranslation.passwordBlank) !== null && _validationTranslation_passwordBlank !== void 0 ? _validationTranslation_passwordBlank : ""); 6619 } 6620 if (type !== FORM_TYPES.LOGIN && (0,_Utils_validation__WEBPACK_IMPORTED_MODULE_7__/* .isKeyPresent */ .aH)(_Constants_common__WEBPACK_IMPORTED_MODULE_2__/* .FORM_FIELD_KEYS */ .xh.PASSWORD, formState) && (0,_Utils_validation__WEBPACK_IMPORTED_MODULE_7__/* .isKeyPresent */ .aH)(_Constants_common__WEBPACK_IMPORTED_MODULE_2__/* .FORM_FIELD_KEYS */ .xh.CONFIRM_PASSWORD, formState) && (!(0,_Lib_helpers_forms_FieldValidator__WEBPACK_IMPORTED_MODULE_3__/* .validStrongPassword */ .ST)(formState === null || formState === void 0 ? void 0 : formState.password) || !(0,_Lib_helpers_forms_FieldValidator__WEBPACK_IMPORTED_MODULE_3__/* .validStrongPassword */ .ST)(formState === null || formState === void 0 ? void 0 : formState.confirmedPassword))) { 6621 var _validationTranslation_passwordBlank1; 6622 formErrMsgs.push((_validationTranslation_passwordBlank1 = validationTranslation === null || validationTranslation === void 0 ? void 0 : validationTranslation.passwordBlank) !== null && _validationTranslation_passwordBlank1 !== void 0 ? _validationTranslation_passwordBlank1 : ""); 6623 } 6624 } 6625 return formErrMsgs; 6626}; 6627const getFormValidationErrorByLocale = (param)=>{ 6628 let { type, error, touched, formState, languageCode, errorCodeTranslation, validationTranslation } = param; 6629 let formErrMsgs = []; 6630 // NOTE: remove this note when it is determined that a locale logic-fork is no longer relevant: at the time this was coded, there was no logical difference between the locales 6631 switch(languageCode){ 6632 case _wildfork_commercetools_core_ui_dist_src_lib_constants_locale__WEBPACK_IMPORTED_MODULE_1__.LOCALE.EN_US: 6633 case _wildfork_commercetools_core_ui_dist_src_lib_constants_locale__WEBPACK_IMPORTED_MODULE_1__.LOCALE.EN_CA: 6634 case _wildfork_commercetools_core_ui_dist_src_lib_constants_locale__WEBPACK_IMPORTED_MODULE_1__.LOCALE.FR_CA: 6635 case _wildfork_commercetools_core_ui_dist_src_lib_constants_locale__WEBPACK_IMPORTED_MODULE_1__.LOCALE.ES_MX: 6636 default: 6637 if (touched) { 6638 formErrMsgs = [ 6639 ...formErrMsgs, 6640 ...getFormErrorCodeMessage({ 6641 // api error response validation 6642 error, 6643 errorCodeTranslation: errorCodeTranslation 6644 }), 6645 ...getFormValidationMessage({ 6646 // standard input validation 6647 type, 6648 formState, 6649 languageCode, 6650 validationTranslation: validationTranslation 6651 }) 6652 ]; 6653 } 6654 break; 6655 } 6656 return formErrMsgs; 6657}; 6658const resetFormActionActiveStatus = (param)=>{ 6659 let { setFormError, setFormActionIsActive } = param; 6660 setFormError(null); 6661 setFormActionIsActive(false); 6662}; 6663const resetFormFieldErrorMessage = (param)=>{ 6664 let { setFormErrorMessages } = param; 6665 setFormErrorMessages([]); 6666}; 6667const useFormFieldValidation = (param)=>{ 6668 let { type, touched: touchedDefault, formState, formAction, languageCode, errorCodeTranslation, validationTranslation } = param; 6669 const [touched, setTouched] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(touchedDefault !== null && touchedDefault !== void 0 ? touchedDefault : false); 6670 const [formError, setFormError] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null); // error response from api call 6671 const [formErrorMessages, setFormErrorMessages] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]); // form error messages to be rendered 6672 const [formActionIsActive, setFormActionIsActive] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false); 6673 (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{ 6674 if (formActionIsActive || formError) { 6675 const formErrMsgs = getFormValidationErrorByLocale({ 6676 type, 6677 error: formError, 6678 touched, 6679 formState, 6680 languageCode, 6681 errorCodeTranslation, 6682 validationTranslation 6683 }); 6684 setFormErrorMessages(formErrMsgs); 6685 resetFormActionActiveStatus({ 6686 setFormError, 6687 setFormActionIsActive 6688 }); // reset the state params that were responsible for triggering this useEffect 6689 if (formActionIsActive && !(formErrMsgs === null || formErrMsgs === void 0 ? void 0 : formErrMsgs.length)) { 6690 resetFormFieldErrorMessage({ 6691 setFormErrorMessages 6692 }); // reset all error message state before submitting form 6693 formAction(); 6694 } 6695 } 6696 }, [ 6697 type, 6698 touched, 6699 formActionIsActive, 6700 formError, 6701 errorCodeTranslation, 6702 validationTranslation, 6703 formAction, 6704 formState, 6705 languageCode 6706 ]); 6707 return { 6708 touched, 6709 setTouched, 6710 formError, 6711 setFormError, 6712 formErrorMessages, 6713 setFormErrorMessages, 6714 setFormActionIsActive 6715 }; 6716}; 6717 6718 6719/***/ }), 6720 6721/***/ 207396: 6722/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6723 6724"use strict"; 6725 6726// EXPORTS 6727__webpack_require__.d(__webpack_exports__, { 6728 Z: function() { return /* binding */ useStructureCartLineItemData; }, 6729 O: function() { return /* binding */ useCTStructuredCartLineItem; } 6730}); 6731 6732// EXTERNAL MODULE: ./node_modules/react/index.js 6733var react = __webpack_require__(667294); 6734// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/lib/constants/commercetools.js 6735var commercetools = __webpack_require__(172271); 6736// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/lib/utils/Logger.js 6737var Logger = __webpack_require__(101914); 6738var Logger_default = /*#__PURE__*/__webpack_require__.n(Logger); 6739// EXTERNAL MODULE: ./src/lib/configs/environment.ts 6740var environment = __webpack_require__(208891); 6741// EXTERNAL MODULE: ./src/lib/store/hooks.ts 6742var hooks = __webpack_require__(267097); 6743// EXTERNAL MODULE: ./src/lib/store/zipcodeSlice.tsx 6744var zipcodeSlice = __webpack_require__(480326); 6745// EXTERNAL MODULE: ./src/lib/utils/index.ts + 1 modules 6746var utils = __webpack_require__(71486); 6747// EXTERNAL MODULE: ./src/lib/utils/cartHelpers.ts 6748var cartHelpers = __webpack_require__(370490); 6749// EXTERNAL MODULE: ./src/lib/utils/cartUtils.tsx 6750var cartUtils = __webpack_require__(729890); 6751// EXTERNAL MODULE: ./src/lib/utils/commercetoolsUtils.ts 6752var commercetoolsUtils = __webpack_require__(575602); 6753// EXTERNAL MODULE: ./src/lib/utils/countrySpecificUtils/index.ts + 6 modules
6754var countrySpecificUtils = __webpack_require__(474005); 6755// EXTERNAL MODULE: ./src/lib/utils/currency.ts 6756var currency = __webpack_require__(444685); 6757;// CONCATENATED MODULE: ./src/lib/utils/measure.ts 6758const convertWeightFromString = (weightString)=>{ 6759 // UOM = Unit Of Measure 6760 const UOM = (weightString === null || weightString === void 0 ? void 0 : weightString.includes("LB")) || (weightString === null || weightString === void 0 ? void 0 : weightString.includes("pounds")) ? "LB" : (weightString === null || weightString === void 0 ? void 0 : weightString.includes("KG")) || weightString.includes("kilograms") ? "KG" : ""; 6761 return UOM; 6762}; 6763const appendUOM = (figure, uom)=>{ 6764 return "".concat(figure, " ").concat(uom); 6765}; 6766 6767// EXTERNAL MODULE: ./src/lib/utils/string.ts 6768var string = __webpack_require__(960099); 6769;// CONCATENATED MODULE: ./src/lib/hooks/useStructureCartLineItemData.ts 6770 6771 6772 6773 6774 6775 6776 6777 6778 6779 6780 6781 6782 6783 6784const PROMOTION_ENABLED = environment.nextAppEnv.feature_toggle.US.isPromotionEnabled; 6785const SHOW_DISCOUNTED_PRICING = environment.nextAppEnv.feature_toggle.US.showDiscountedPricing; 6786const getImageDataFromCT = async (sku)=>{ 6787 try { 6788 if ((0,cartUtils/* isAMembershipLineItem */.RW)(sku)) return ""; 6789 return await (0,commercetoolsUtils/* getCTProductBySKU */.hn)(sku).then((res)=>{ 6790 var _res_masterData, _currentProduct_masterVariant; 6791 const currentProduct = res === null || res === void 0 ? void 0 : (_res_masterData = res.masterData) === null || _res_masterData === void 0 ? void 0 : _res_masterData.current; 6792 const images = currentProduct === null || currentProduct === void 0 ? void 0 : (_currentProduct_masterVariant = currentProduct.masterVariant) === null || _currentProduct_masterVariant === void 0 ? void 0 : _currentProduct_masterVariant.images; 6793 return images && images.length > 0 ? images[0].url : ""; 6794 }); 6795 } catch (e) { 6796 Logger_default().info("error getting lineItem image"); 6797 return ""; 6798 } 6799}; 6800const getPriceWithCurrency = (price)=>utils/* currency */.Aq === null || utils/* currency */.Aq === void 0 ? void 0 : utils/* currency.format */.Aq.format(utils/* currency */.Aq === null || utils/* currency */.Aq === void 0 ? void 0 : utils/* currency.convertToDollar */.Aq.convertToDollar(price)); 6801const useCTStructuredCartLineItem = (lineItem)=>{ 6802 var _product_masterData_current, _product_masterData, _product_productType_obj, _product_productType, _product_masterData_current_masterVariant_attributes_f
6802ind, _product_masterData_current_masterVariant_attributes, _product_masterData_current_masterVariant, _product_masterData_current1, _product_masterData1; 6803 const stateFromZip = (0,hooks/* useAppSelector */.C)(zipcodeSlice/* selectStateFromZip */.kR); 6804 const sku = lineItem.sku; 6805 const [product, setProduct] = (0,react.useState)(null); 6806 const productMaterVariant = product === null || product === void 0 ? void 0 : (_product_masterData = product.masterData) === null || _product_masterData === void 0 ? void 0 : (_product_masterData_current = _product_masterData.current) === null || _product_masterData_current === void 0 ? void 0 : _product_masterData_current.masterVariant; 6807 const isAMembership = (0,cartUtils/* isAMembershipLineItem */.RW)(sku); 6808 (0,react.useEffect)(()=>{ 6809 const CTProductData = async ()=>{ 6810 try { 6811 const product = await (0,commercetoolsUtils/* getCTProductBySKU */.hn)(sku); 6812 return product; 6813 } catch (err) { 6814 Logger_default().info("error getting CartLineItem products, Error:", err); 6815 return null; 6816 } 6817 }; 6818 const getCTLineItemData = async ()=>{ 6819 const data = await CTProductData(); 6820 if (data) { 6821 setProduct(data); 6822 } 6823 }; 6824 getCTLineItemData(); 6825 }, [ 6826 sku 6827 ]); 6828 const productName = product === null || product === void 0 ? void 0 : (_product_productType = product.productType) === null || _product_productType === void 0 ? void 0 : (_product_productType_obj = _product_productType.obj) === null || _product_productType_obj === void 0 ? void 0 : _product_productType_obj.name; 6829 const isBundle = productName ? (0,cartHelpers/* isBundleItem */.Dp)(productName) : undefined; 6830 const isProductSet = productName ? (0,cartHelpers/* isTypeProductSet */.gZ)(productName) : false; 6831 const attributes = productMaterVariant === null || productMaterVariant === void 0 ? void 0 : productMaterVariant.attributes; 6832 const hasProp65Warning = (0,cartHelpers/* checkProp65Warning */.Zu)(attributes); 6833 const productSetItems = (0,cartHelpers/* getSetItemProducts */.vS)(attributes !== null && attributes !== void 0 ? attributes : []); 6834 const isFixedProductSet = productSetItems === null || productSetItems === void 0 ? void 0 : productSetItems.every((product)=>product.isFixedPrice); 6835 const promotionText = PROMOTION_ENABLED ? (0,cartHelpers/* getPromotionText */.jZ)(attributes !== null && attributes !== void 0 ? attributes : []) : null; 6836 // If present, extract maxQty from attributes array of objects and expose it. 6837 const maxQty = product === null || product === void 0 ? void 0 : (_product_masterData1 = product.masterData) === null || _product_masterData1 === void 0 ? void 0 : (_product_masterData_current1 = _product_masterData1.current) === null || _product_masterData_current1 === void 0 ? void 0 : (_product_masterData_current_masterVariant = _product_masterData_current1.masterVariant) === null || _product_masterData_current_masterVariant === void 0 ? void 0 : (_product_masterData_current_masterVariant_attributes = _product_masterData_current_masterVariant.attributes) === null || _product_masterData_current_masterVariant_attributes === void 0 ? void 0 : (_product_masterData_current_masterVariant_attributes_f
6837ind = _product_masterData_current_masterVariant_attributes.find((e)=>e.name === commercetools/* COMMERCETOOLS_ATTRIBUTES */.b.MAX_QTY)) === null || _product_masterData_current_masterVariant_attributes_find === void 0 ? void 0 : _product_masterData_current_masterVariant_attributes_find.value; 6838 const totalPricePerItemDiscountedText = PROMOTION_ENABLED && SHOW_DISCOUNTED_PRICING && lineItem.totalDiscountedPrice ? getPriceWithCurrency(lineItem.totalDiscountedPrice / lineItem.quantity) : undefined; 6839 const perUnitDiscountedPriceText = PROMOTION_ENABLED && SHOW_DISCOUNTED_PRICING && lineItem.discountedPricePerLb ? "".concat(getPriceWithCurrency(lineItem.discountedPricePerLb), "/LB") : undefined; 6840 const rawTotalPriceText = getPriceWithCurrency(lineItem.rawTotalPrice / lineItem.quantity); 6841 const perUnitPriceText = (0,countrySpecificUtils/* getPerUnitPriceText */.Cj)(isAMembership, lineItem); 6842 const weightText = (0,countrySpecificUtils/* getCartLineItemWeightText */.sP)(lineItem); 6843 const newLineItem = { 6844 ...lineItem, 6845 hasProp65Warning: hasProp65Warning && stateFromZip === "CA", 6846 isBundle, 6847 isProductSet, 6848 isFixedProductSet, 6849 maxQty, 6850 perUnitPriceText, 6851 totalProductPriceInCents: SHOW_DISCOUNTED_PRICING ? lineItem.totalPrice / lineItem.quantity : lineItem.rawTotalPrice / lineItem.quantity, 6852 perUnitDiscountedPriceText, 6853 totalPricePerItemDiscountedText, 6854 rawTotalPriceText, 6855 promotionText, 6856 weightText 6857 }; 6858 return newLineItem; 6859}; 6860function useStructureCartLineItemData(item) { 6861 let unitOfWeight = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "LB"; 6862 const { regionId } = (0,hooks/* useAppSelector */.C)(zipcodeSlice/* ZipCodeSelector */.pz); 6863 const sku = item.sku; 6864 const weight = Number((0,string/* get1stSubstring */.h$)(item === null || item === void 0 ? void 0 : item.weightText)); 6865 const netWeight = weight ? weight.toLocaleString(undefined, { 6866 maximumFractionDigits: 2 6867 }) + " ".concat(unitOfWeight) : ""; 6868 const perUnitPrice = Number(item.perUnitPriceText); 6869 const isFixedPrice = item.isFixedPrice; 6870 const UOM = convertWeightFromString((0,string/* get2ndSubstring */.BK)(item === null || item === void 0 ? void 0 : item.weightText)); 6871 const weightText = (0,countrySpecificUtils/* formatNetWeight */.f8)(weight, UOM, isFixedPrice); 6872 const unitPrice = (0,cartHelpers/* GetPerWeightPrice */.TC)({ 6873 price: perUnitPrice, 6874 UOM, 6875 regionId 6876 }); 6877 const totalPrice = utils/* currency.format */.Aq.format((0,currency.convertToDollar)((item === null || item === void 0 ? void 0 : item.totalPrice) / (item === null || item === void 0 ? void 0 : item.quantity))); 6878 const dispatch = (0,hooks/* useAppDispatch */.T)(); 6879 const [productImageUrl, setProductImageUrl] = (0,react.useState)(""); 6880 (0,react.useEffect)(()=>{ 6881 const waitForImage = async ()=>{ 6882 return await getImageDataFromCT(sku).then((image)=>setProductImageUrl(image)).catch((err)=>{ 6883 Logger_default().info("error getting CartLineItem image, Error:", err); 6884 return ""; 6885 }); 6886 }; 6887 waitForImage(); 6888 }, [ 6889 sku 6890 ]); 6891 return { 6892 sku, 6893 productImageUrl, 6894 netWeight, 6895 weightText, 6896 unitPrice, 6897 totalPrice, 6898 isFixedPrice, 6899 dispatch 6900 }; 6901} 6902 6903 6904/***/ }), 6905 6906/***/ 53306: 6907/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6908 6909"use strict"; 6910/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6911/* harmony export */ f: function() { return /* binding */ useWrongCredentialsMaxAttempts; } 6912/* harmony export */ }); 6913/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(667294); 6914/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(305208); 6915/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wildfork_commercetools_core_ui_dist_src_lib_utils__WEBPACK_IMPORTED_MODULE_1__); 6916/* harmony import */ var _Lib_configs_environment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(208891); 6917 6918 6919 6920const useWrongCredentialsMaxAttempts = (param)=>{ 6921 let { axiosError, maxAttempts = _Lib_configs_environment__WEBPACK_IMPORTED_MODULE_2__.nextAppEnv.application.wrongPasswordMax, onMaxAttemptsExceeded } = param; 6922 const wrongCredentialAttempts = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(0); 6923 const hasEnteredWrongCredentials = _wildfork_commercetools_core_ui_dist_src_lib_utils__WEBPACK_IMPORTED_MODULE_1__.AxiosErrorUtils.isUnauthorizedError(axiosError); 6924 (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{ 6925 if (hasEnteredWrongCredentials) { 6926 wrongCredentialAttempts.current += 1; 6927 if (wrongCredentialAttempts.current >= maxAttempts) { 6928 onMaxAttemptsExceeded(); 6929 wrongCredentialAttempts.current = 0; 6930 } 6931 } 6932 }, [ 6933 hasEnteredWrongCredentials, 6934 maxAttempts, 6935 onMaxAttemptsExceeded 6936 ]); 6937}; 6938 6939 6940/***/ }), 6941 6942/***/ 108204: 6943/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6944 6945"use strict"; 6946/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6947/* harmony export */ z: function() { return /* binding */ DeletePaymentMethodType; } 6948/* harmony export */ }); 6949var DeletePaymentMethodType; 6950(function(DeletePaymentMethodType) { 6951 DeletePaymentMethodType["EBT"] = "ebt"; 6952 DeletePaymentMethodType["GIFT_CARD"] = "giftcard"; 6953})(DeletePaymentMethodType || (DeletePaymentMethodType = {})); 6954 6955 6956/***/ }), 6957 6958/***/ 637938: 6959/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6960 6961"use strict"; 6962/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6963/* harmony export */ O: function() { return /* binding */ CheckoutAccountType; } 6964/* harmony export */ }); 6965var CheckoutAccountType; 6966(function(CheckoutAccountType) { 6967 CheckoutAccountType["LOGIN"] = "Login"; 6968 CheckoutAccountType["SIGNUP"] = "Signup"; 6969 CheckoutAccountType["GUEST_CHECKOUT"] = "Guest Checkout"; 6970})(CheckoutAccountType || (CheckoutAccountType = {})); 6971 6972 6973/***/ }), 6974 6975/***/ 960099: 6976/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6977 6978"use strict"; 6979/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6980/* harmony export */ BK: function() { return /* binding */ get2ndSubstring; }, 6981/* harmony export */ PH: function() { return /* binding */ getIndefiniteArticle; }, 6982/* harmony export */ h$: function() { return /* binding */ get1stSubstring; }, 6983/* harmony export */ kC: function() { return /* binding */ capitalize; } 6984/* harmony export */ }); 6985/* unused harmony export getSubstringByIndex */ 6986const getSubstringByIndex = (string, index)=>{ 6987 var _string_trim_split, _string_trim; 6988 var _string_trim_split_index; 6989 const substring = (_string_trim_split_index = string === null || string === void 0 ? void 0 : (_string_trim = string.trim()) === null || _str
6989ing_trim === void 0 ? void 0 : (_string_trim_split = _string_trim.split(" ")) === null || _string_trim_split === void 0 ? void 0 : _string_trim_split[index]) !== null && _string_trim_split_index !== void 0 ? _string_trim_split_index : ""; 6990 return substring; 6991}; 6992const get1stSubstring = (string)=>{ 6993 return getSubstringByIndex(string, 0); 6994}; 6995const get2ndSubstring = (string)=>{ 6996 return getSubstringByIndex(string, 1); 6997}; 6998const getIndefiniteArticle = function() { 6999 let word = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ""; 7000 const vowels = [ 7001 "a", 7002 "e", 7003 "i", 7004 "o", 7005 "u" 7006 ]; 7007 const lowerCaseWord = word.toLowerCase().trim(); 7008 const article = vowels.includes(lowerCaseWord.charAt(0)) ? "an" : "a"; 7009 return "".concat(article); 7010}; 7011const capitalize = (text)=>{ 7012 return text.toLowerCase().split(" ").map((word)=>word.charAt(0).toUpperCase() + word.slice(1)).join(" "); 7013}; 7014 7015 7016/***/ }), 7017 7018/***/ 242124: 7019/***/ (function(module) { 7020 7021// extracted by mini-css-extract-plugin 7022module.exports = {"address-verification-modal":"AddressVerificationModal_address-verification-modal__4oC16","address-verification-modal__wrapper":"AddressVerificationModal_address-verification-modal__wrapper__RN4qg","address-verification-modal-modal__overlay":"AddressVerificationModal_address-verification-modal-modal__overlay__JRB_F","address-verification-modal__content":"AddressVerificationModal_address-verification-modal__content__e_4Zv","address-verification-modal__title":"AddressVerificationModal_address-verification-modal__title__l5Qtr","address-verification-modal__subtitle":"AddressVerificationModal_address-verification-modal__subtitle__yb6NP","address-verification-modal__body":"AddressVerificationModal_address-verification-modal__body__WVDpH","address-verification-modal__card":"AddressVerificationModal_address-verification-modal__card__QzmMd","address-verification-modal__card-title":"AddressVerificationModal_address-verification-modal__card-title__NRmbb","address-verification-modal__card-edit-text-button":"AddressVerificationModal_address-verification-modal__card-edit-text-button__qunpj","address-verification-modal__error-card":"AddressVerificationModal_address-verification-modal__error-card__j2579","address-verification-modal__error-card__message":"AddressVerificationModal_address-verification-modal__error-card__message__mXhl8","address-verification-modal__footer":"AddressVerificationModal_address-verification-modal__footer__XmhI7","address-verification-modal__close":"AddressVerificationModal_address-verification-modal__close__mFVI3","address-verification-modal__button":"AddressVerificationModal_address-verification-modal__button__k3ZOe"}; 7023 7024/***/ }), 7025 7026/***/ 160186: 7027/***/ (function(module) { 7028 7029// extracted by mini-css-extract-plugin 7030module.exports = {"text__field":"FormTextField_text__field__HZ5QX","text__field-error":"FormTextField_text__field-error__aoMZE","standard_outlined":"FormTextField_standard_outlined__QQ_jE","required":"FormTextField_required__PXFEx","error-message":"FormTextField_error-message__mWs5k"}; 7031 7032/***/ }), 7033 7034/***/ 809525: 7035/***/ (function(module) { 7036 7037// extracted by mini-css-extract-plugin 7038module.exports = {"form__messages":"LoginForm_form__messages__b4nG_","form__messages__heading1":"LoginForm_form__messages__heading1__Ykgls","form__messages__heading2":"LoginForm_form__messages__heading2__oAh5K","form__error_container":"LoginForm_form__error_container__YxNEH","update-password-notification":"LoginForm_update-password-notification__dzGbS","update-password-notification--loading":"LoginForm_update-password-notification--loading__kxR8M","submit-button":"LoginForm_submit-button__QWCT3","forgot-password":"LoginForm_forgot-password__Uf7X_"}; 7039 7040/***/ }), 7041 7042/***/ 294784: 7043/***/ (function(module) { 7044 7045// extracted by mini-css-extract-plugin 7046module.exports = {"accordion":"Accordion_accordion__q7ryf"}; 7047 7048/***/ }), 7049 7050/***/ 648466: 7051/***/ (function(module) { 7052 7053// extracted by mini-css-extract-plugin 7054module.exports = {"accordion-item-content":"AccordionItemContent_accordion-item-content__MFrfr","accordion-item-content-pickup":"AccordionItemContent_accordion-item-content-pickup__ibwCy"}; 7055 7056/***/ }), 7057 7058/***/ 675730: 7059/***/ (function(module) { 7060 7061// extracted by mini-css-extract-plugin 7062module.exports = {"accordion-item-header":"AccordionItemHeader_accordion-item-header__I27iU","accordion-item-header-pickup":"AccordionItemHeader_accordion-item-header-pickup__n7y8k","accordion-item-header--disabled":"AccordionItemHeader_accordion-item-header--disabled__v9lM9","accordion-item-header-pickup--disabled":"AccordionItemHeader_accordion-item-header-pickup--disabled__jAjFt","input-radio":"AccordionItemHeader_input-radio__bW05t","checkmark-red":"AccordionItemHeader_checkmark-red__n2TMD","checkmark-black":"AccordionItemHeader_checkmark-black__aoHWZ","checkmark-white":"AccordionItemHeader_checkmark-white___QjqI"}; 7063 7064/***/ }), 7065 7066/***/ 150424: 7067/***/ (function(module) { 7068 7069// extracted by mini-css-extract-plugin 7070module.exports = {"btn--disabled":"Button_btn--disabled__ts722","btn":"Button_btn__sZQtM"}; 7071 7072/***/ }), 7073 7074/***/ 527013: 7075/***/ (function(module) { 7076 7077// extracted by mini-css-extract-plugin
7078module.exports = {"modal":"Modal_modal__wS92s","modal__wrapper":"Modal_modal__wrapper__MY7J4","modal__layout":"Modal_modal__layout__uCIaU","modal__header":"Modal_modal__header__uY1_v","modal__body":"Modal_modal__body__kvjWt","modal__close":"Modal_modal__close__iZATs"}; 7079 7080/***/ }), 7081 7082/***/ 814102: 7083/***/ (function(module) { 7084 7085// extracted by mini-css-extract-plugin 7086module.exports = {"select-container":"Select_select-container__UadQM","required":"Select_required__qDi_5","input-blue":"Select_input-blue__cPnPM","error-text":"Select_error-text__v3W0k","disabled-select":"Select_disabled-select__5qMr_"}; 7087 7088/***/ }), 7089 7090/***/ 850765: 7091/***/ (function(module) { 7092 7093// extracted by mini-css-extract-plugin 7094module.exports = {"input-container":"TextField_input-container___F9eN","required":"TextField_required__aeDhw","tooltip":"TextField_tooltip__g48tt","input-grey":"TextField_input-grey__EBkb6","text-field--error":"TextField_text-field--error___ySkg","error":"TextField_error__NkxWo","error-text":"TextField_error-text__J2OTF","previewicon":"TextField_previewicon__ATwT4","previewicon--show":"TextField_previewicon--show__UXvgy","disabled-text-feild":"TextField_disabled-text-feild__zn6Ya"}; 7095 7096/***/ }) 7097 7098}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.