{"version":3,"file":"index.js","mappings":"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","sources":["webpack://orishoppingbagprovider/./node_modules/lodash.camelcase/index.js","webpack://orishoppingbagprovider/webpack/bootstrap","webpack://orishoppingbagprovider/webpack/runtime/compat get default export","webpack://orishoppingbagprovider/webpack/runtime/define property getters","webpack://orishoppingbagprovider/webpack/runtime/global","webpack://orishoppingbagprovider/webpack/runtime/hasOwnProperty shorthand","webpack://orishoppingbagprovider/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://orishoppingbagprovider/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://orishoppingbagprovider/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://orishoppingbagprovider/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://orishoppingbagprovider/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://orishoppingbagprovider/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://orishoppingbagprovider/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://orishoppingbagprovider/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/accept-notification/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/add-to-basket/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/add-backorder-demand/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/add-basket-offer/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/add-catalogue-offer/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/add-customer-order/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/add-free-shipping-offer/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/add-voucher/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/loyalty-dialog-result/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/basket-updated/esm/BasketOffer.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/basket-updated/esm/ShoppingNotification.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/basket-updated/esm/index.js","webpack://orishoppingbagprovider/./src/models/enums.ts","webpack://orishoppingbagprovider/./node_modules/@ori-events/cancel-backorder-demand/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/cancel-subscription/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/clear-basket/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/delay-subscription/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/place-order-requested/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/remove-basket-item/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/remove-customer-order/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/remove-voucher/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/replace-shopping-bag-item/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/request-clear-shopping-cache/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/request-shopping-context/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/reset-shipping-selection/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/shopping-context-loaded/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/update-basket-item/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/update-customer-order-item/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/update-delivery/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/update-delivery-channel/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/update-donation/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/update-offer-item/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/update-offer-items/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/update-payment-provider/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/failed-event-data/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/accept-notification-failed/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/add-basket-offer-failed/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://orishoppingbagprovider/./src/helpers/convertToCamelCase.ts","webpack://orishoppingbagprovider/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://orishoppingbagprovider/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://orishoppingbagprovider/./src/helpers/getHttpRequestSettings.ts","webpack://orishoppingbagprovider/./src/helpers/addBasketOffer.ts","webpack://orishoppingbagprovider/./src/guards/addBasketOfferResponse.ts","webpack://orishoppingbagprovider/./src/helpers/log.ts","webpack://orishoppingbagprovider/./src/helpers/clearCachePages.ts","webpack://orishoppingbagprovider/./src/helpers/dispatchBasketUpdatedEvent.ts","webpack://orishoppingbagprovider/./src/helpers/cookies.ts","webpack://orishoppingbagprovider/./src/helpers/storage.ts","webpack://orishoppingbagprovider/./src/helpers/hashes.ts","webpack://orishoppingbagprovider/./node_modules/@ori-events/update-basket-item-failed/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/add-catalogue-offer-failed/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/add-customer-order-failed/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/add-free-shipping-offer-failed/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/add-to-basket-failed/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/show-loyalty-dialog/esm/index.js","webpack://orishoppingbagprovider/./src/helpers/addToBasket.ts","webpack://orishoppingbagprovider/./src/guards/addToBasketResponse.ts","webpack://orishoppingbagprovider/./node_modules/@ori-events/add-voucher-failed/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/cancel-subscription-failed/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/delay-subscription-failed/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/remove-customer-order-failed/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/remove-voucher-failed/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/replace-shopping-bag-item-failed/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/update-customer-order-item-failed/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/update-delivery-channel-failed/esm/index.js","webpack://orishoppingbagprovider/./src/constants/index.ts","webpack://orishoppingbagprovider/./node_modules/@ori-events/update-delivery-failed/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/update-donation-failed/esm/index.js","webpack://orishoppingbagprovider/./node_modules/@ori-events/update-payment-provider-failed/esm/index.js","webpack://orishoppingbagprovider/./src/BasketProvider.ts","webpack://orishoppingbagprovider/./src/handlers/acceptNotificationHandler.ts","webpack://orishoppingbagprovider/./src/handlers/addBackorderDemandHandler.ts","webpack://orishoppingbagprovider/./src/handlers/addBasketOfferHandler.ts","webpack://orishoppingbagprovider/./src/guards/addBasketOfferRequest.ts","webpack://orishoppingbagprovider/./src/handlers/addCatalogueOfferHandler.ts","webpack://orishoppingbagprovider/./src/handlers/addCustomerOrderHandler.ts","webpack://orishoppingbagprovider/./src/guards/addCustomerOrderResponse.ts","webpack://orishoppingbagprovider/./src/handlers/addFreeShippingOfferHandler.ts","webpack://orishoppingbagprovider/./src/handlers/addToBasketHandler.ts","webpack://orishoppingbagprovider/./src/helpers/getBuyingURLandMethod.ts","webpack://orishoppingbagprovider/./src/handlers/addVoucherHandler.ts","webpack://orishoppingbagprovider/./src/guards/addVoucherResponse.ts","webpack://orishoppingbagprovider/./src/handlers/cancelBackorderDemandHandler.ts","webpack://orishoppingbagprovider/./src/handlers/cancelSubscriptionHandler.ts","webpack://orishoppingbagprovider/./src/handlers/clearBasketHandler.ts","webpack://orishoppingbagprovider/./src/handlers/delaySubscriptionHandler.ts","webpack://orishoppingbagprovider/./src/guards/delaySubscriptionResponse.ts","webpack://orishoppingbagprovider/./src/handlers/checkLoyaltyDialogResultAndAddToBasketHandler.ts","webpack://orishoppingbagprovider/./src/handlers/removeFromBasketHandler.ts","webpack://orishoppingbagprovider/./src/handlers/removeCustomerOrderHandler.ts","webpack://orishoppingbagprovider/./src/guards/removeCustomerOrderResponse.ts","webpack://orishoppingbagprovider/./src/handlers/removeVoucherHandler.ts","webpack://orishoppingbagprovider/./src/guards/removeVoucherResponse.ts","webpack://orishoppingbagprovider/./src/handlers/replaceShoppingBagItemHandler.ts","webpack://orishoppingbagprovider/./src/guards/replaceShoppingBagItemResponse.ts","webpack://orishoppingbagprovider/./src/handlers/resetShippingSelectionHandler.ts","webpack://orishoppingbagprovider/./src/handlers/updateBasketItemHandler.ts","webpack://orishoppingbagprovider/./src/handlers/updateCustomerOrderItemHandler.ts","webpack://orishoppingbagprovider/./src/guards/updateCustomerOrderItemResponse.ts","webpack://orishoppingbagprovider/./src/handlers/updateDeliveryHandler.ts","webpack://orishoppingbagprovider/./src/handlers/updateDeliveryChannelHandler.ts","webpack://orishoppingbagprovider/./src/handlers/updateDonationHandler.ts","webpack://orishoppingbagprovider/./src/handlers/updateOfferItemsHandler.ts","webpack://orishoppingbagprovider/./src/handlers/updateOfferItemHandler.ts","webpack://orishoppingbagprovider/./src/handlers/updatePaymentProviderHandler.ts","webpack://orishoppingbagprovider/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://orishoppingbagprovider/./src/handlers/requestShoppingContextHandler.ts","webpack://orishoppingbagprovider/./src/index.ts"],"sourcesContent":["/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe23',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20f0',\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsLowerMisc = '(?:' + rsLower + '|' + rsMisc + ')',\n rsUpperMisc = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptLowerContr = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptUpperContr = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptLowerContr + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsUpperMisc + '+' + rsOptUpperContr + '(?=' + [rsBreak, rsUpper + rsLowerMisc, '$'].join('|') + ')',\n rsUpper + '?' + rsLowerMisc + '+' + rsOptLowerContr,\n rsUpper + '+' + rsOptUpperContr,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']');\n\n/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 'ss'\n};\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\n/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = camelCase;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export var Name = 'accept-notification';\nexport var AcceptNotificationEvent = Name;","export var Name = 'add-to-basket';\nexport var AddToBasketEvent = Name;\nexport var Method;\n\n(function (Method) {\n Method[\"BUY_FOR_MONEY\"] = \"BUY_FOR_MONEY\";\n Method[\"BUY_FOR_POINTS\"] = \"BUY_FOR_POINTS\";\n})(Method || (Method = {}));","export var Name = 'add-backorder-demand';\nexport var AddBackorderDemandEvent = Name;","export var Name = 'add-basket-offer';\nexport var AddBasketOffer = Name;","export var Name = 'add-catalogue-offer';\nexport var AddCatalogueOfferEvent = Name;","export var Name = 'add-customer-order';\nexport var AddCustomerOrderEvent = Name;","export var Name = 'add-free-shipping-offer';\nexport var AddFreeShippingOfferEvent = Name;","export var Name = 'add-voucher';\nexport var AddVoucherEvent = Name;","import { Method } from '@ori-events/add-to-basket';\nexport var Name = 'loyalty-dialog-result';\nexport var LoyaltyDialogResultEvent = Name;\nexport var LoyaltyDialogResults;\n\n(function (LoyaltyDialogResults) {\n LoyaltyDialogResults[\"CLOSE\"] = \"CLOSE\";\n})(LoyaltyDialogResults || (LoyaltyDialogResults = {}));\n\nexport { Method };\nexport var Results;\n\n(function (Results) {\n Results[Results[\"CLOSE\"] = LoyaltyDialogResults.CLOSE] = \"CLOSE\";\n Results[Results[\"BUY_FOR_MONEY\"] = Method.BUY_FOR_MONEY] = \"BUY_FOR_MONEY\";\n Results[Results[\"BUY_FOR_POINTS\"] = Method.BUY_FOR_POINTS] = \"BUY_FOR_POINTS\";\n})(Results || (Results = {}));\n\nexport var isLoyaltyBuyForMoneyResult = function isLoyaltyBuyForMoneyResult(result) {\n return result === Method.BUY_FOR_MONEY;\n};\nexport var isLoyaltyBuyForPointsResult = function isLoyaltyBuyForPointsResult(result) {\n return result === Method.BUY_FOR_POINTS;\n};\nexport var isLoyaltyCloseResult = function isLoyaltyCloseResult(result) {\n return result === LoyaltyDialogResults.CLOSE;\n};","export var BasketOfferTypes;\n\n(function (BasketOfferTypes) {\n BasketOfferTypes[BasketOfferTypes[\"BUY_WITH_DISCOUNT\"] = 1] = \"BUY_WITH_DISCOUNT\";\n BasketOfferTypes[BasketOfferTypes[\"GET_BENEFIT\"] = 2] = \"GET_BENEFIT\";\n BasketOfferTypes[BasketOfferTypes[\"CHOOSE_WITH_DISCOUNT\"] = 3] = \"CHOOSE_WITH_DISCOUNT\";\n BasketOfferTypes[BasketOfferTypes[\"CHOOSE_AND_GET\"] = 4] = \"CHOOSE_AND_GET\";\n BasketOfferTypes[BasketOfferTypes[\"CHOOSE_AND_CHOOSE\"] = 5] = \"CHOOSE_AND_CHOOSE\";\n})(BasketOfferTypes || (BasketOfferTypes = {}));","export var ShoppingNotificationType;\n\n(function (ShoppingNotificationType) {\n ShoppingNotificationType[\"Error\"] = \"Error\";\n ShoppingNotificationType[\"Info\"] = \"Info\";\n ShoppingNotificationType[\"Reminding\"] = \"Reminding\";\n ShoppingNotificationType[\"Success\"] = \"Success\";\n ShoppingNotificationType[\"Warning\"] = \"Warning\";\n})(ShoppingNotificationType || (ShoppingNotificationType = {}));","export { Results as LastAddedItemMethod } from '@ori-events/loyalty-dialog-result';\nexport { BasketOfferTypes } from './BasketOffer';\nexport { ShoppingNotificationType } from './ShoppingNotification';\nexport var Name = 'basket-updated';\nexport var BasketUpdatedEvent = Name;","export enum ContentTypes {\n Json = 'application/json',\n}\n\nexport enum Header {\n ContentType = 'Content-Type',\n Placement = 'x-placement',\n}\n\nexport enum RequestMethod {\n Get = 'GET',\n Post = 'POST',\n}\n\nexport enum RequestUrl {\n AcceptNotification = '/system/ajax/Message/AcceptFailMessage',\n AddBackorderDemand = '/system/ajax/ShoppingBag/AddBackorderDemand',\n AddBasketOffer = '/system/ajax/Offer/ApplyBasketOffer',\n AddCatalogueOffer = '/system/ajax/Offer/ApplyCatalogueOffer',\n AddCustomerOrder = '/system/ajax/EndConsumerOrder/ApproveOrders',\n AddFreeShippingOffer = '/system/ajax/Delivery/AddFreeShippingItem',\n AddToBasketCheckLoyalty = '/system/ajax/ShoppingBag/AddToShoppingBagItemAndCheckLoyalty',\n AddToBasketForMoney = '/system/ajax/ShoppingBag/AddOrUpdateShoppingBagItem',\n AddToBasketForPoints = '/system/ajax/Offer/AddOfferItem',\n AddToBasketForPointsRewardShop = '/system/ajax/Offer/RedeemLoyaltyPoints',\n AddVoucher = '/system/ajax/ShoppingBag/AddVoucher',\n CancelBackorderDemand = '/system/ajax/ShoppingBag/CancelBackorderDemand',\n CancelSubscription = '/system/ajax/ShoppingBag/CancelSubscription',\n ClearBasket = '/system/ajax/ShoppingBag/RemoveAllShoppingBagItems',\n DelaySubscription = '/system/ajax/ShoppingBag/DelaySubscription',\n GetShoppingContext = '/system/ajax/ShoppingBag/GetShoppingContext',\n PurchaseBasketOffer = '/system/ajax/Offer/PurchaseBasketOffer',\n RemoveBasketItem = '/system/ajax/ShoppingBag/RemoveShoppingBagItem',\n RemoveCustomerOrder = '/system/ajax/EndConsumerOrder/UnapproveOrder',\n RemoveVoucher = '/system/ajax/ShoppingBag/RemoveVoucher',\n ReplaceShoppingBagItem = '/system/ajax/ShoppingBag/ReplaceShoppingBagItem',\n ResetFreeShippingSelection = '/system/ajax/Delivery/ResetFreeShippingSelection',\n UpdateBasketItem = '/system/ajax/ShoppingBag/UpdateShoppingBagItem',\n UpdateCustomerOrderItem = '/system/ajax/EndConsumerOrder/UpdateEndConsumerOrderItem',\n UpdateDeliveryAddress = '/system/ajax/DeliverySelection/UpdateDeliveryAddress',\n UpdateDeliveryChannel = '/system/ajax/DeliverySelection/UpdateDeliveryChannel',\n UpdateDonation = '/system/ajax/Donation/UpdateDonation',\n UpdateOfferItem = '/system/ajax/Offer/UpdateOfferItem',\n UpdateOfferItems = '/system/ajax/Offer/UpdateOfferItems',\n UpdatePaymentProvider = '/system/ajax/Payment/UpdatePaymentProvider',\n}\n","export var Name = 'cancel-backorder-demand';\nexport var CancelBackorderDemandEvent = Name;","export var Name = 'cancel-subscription';\nexport var CancelSubscriptionEvent = Name;","export var Name = 'clear-basket';\nexport var ClearBasketEvent = Name;","export var Name = 'delay-subscription';\nexport var DelaySubscriptionEvent = Name;","export var Name = 'place-order-requested';\nexport var PlaceOrderRequestedEvent = Name;","export var Name = 'remove-basket-item';\nexport var RemoveBasketItemEvent = Name;","export var Name = 'remove-customer-order';\nexport var RemoveCustomerOrderEvent = Name;","export var Name = 'remove-voucher';\nexport var RemoveVoucherEvent = Name;","export var Name = 'replace-shopping-bag-item';\nexport var ReplaceShoppingBagItemEvent = Name;","export var Name = 'request-clear-shopping-cache';\nexport var RequestClearShoppingCacheEvent = Name;","export var Name = 'request-shopping-context';\nexport var RequestShoppingContextEvent = Name;","export var Name = 'reset-shipping-selection';\nexport var ResetShippingSelectionEvent = Name;","export var Name = 'shopping-context-loaded';\nexport var ShoppingContextLoadedEvent = Name;","export var Name = 'update-basket-item';\nexport var UpdateBasketItemEvent = Name;","export var Name = 'update-customer-order-item';\nexport var UpdateCustomerOrderItemEvent = Name;","export var Name = 'update-delivery';\nexport var UpdateDeliveryEvent = Name;","export var Name = 'update-delivery-channel';\nexport var UpdateDeliveryChannelEvent = Name;","export var Name = 'update-donation';\nexport var UpdateDonationEvent = Name;","export var Name = 'update-offer-item';\nexport var UpdateOfferItemEvent = Name;","export var Name = 'update-offer-items';\nexport var UpdateOfferItemsEvent = Name;","export var Name = 'update-payment-provider';\nexport var UpdatePaymentProviderEvent = Name;","export var isErrorResponse = function isErrorResponse(response) {\n return typeof response === 'object' && response.isSuccess === false;\n};","import { isErrorResponse } from '@ori-events/failed-event-data';\nexport var Name = 'accept-notification-failed';\nexport var AcceptNotificationFailedEvent = Name;\nexport var isAcceptNotificationErrorResponse = function isAcceptNotificationErrorResponse(response) {\n return isErrorResponse(response);\n};","import { isErrorResponse } from '@ori-events/failed-event-data';\nexport var Name = 'add-basket-offer-failed';\nexport var AddBasketOfferFailedEvent = Name;\nexport var isAddBasketOfferErrorResponse = function isAddBasketOfferErrorResponse(response) {\n return isErrorResponse(response);\n};","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import camelCase from 'lodash.camelcase';\n\ntype CamelCaseObjectDeepType = (object?: unknown) => T;\n\nexport const convertToCamelCase: CamelCaseObjectDeepType = (object?: unknown) => {\n if (Array.isArray(object)) {\n return object.map(convertToCamelCase) as unknown as T;\n }\n\n if (typeof object === 'object' && object !== null && object.constructor === Object) {\n return Object.fromEntries(\n Object.entries(object).map(([key, value]) => [camelCase(key), convertToCamelCase(value)]),\n ) as unknown as T;\n }\n\n return object as T;\n};\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import type { PositionData } from '@ori/analytics-data';\n\nimport { ContentTypes, Header, RequestMethod } from '~/models';\n\nexport const getHttpRequestSettings: (\n data?: T,\n method?: RequestMethod,\n) => RequestInit = (data, method = RequestMethod.Get) => {\n const headers: HeadersInit = {\n [Header.ContentType]: ContentTypes.Json,\n };\n let body: BodyInit | undefined;\n if (data) {\n const { placement, ...finalData } = data;\n if (placement) {\n headers[Header.Placement] = placement;\n }\n const bodyValue = JSON.stringify(finalData);\n body = bodyValue === '{}' ? undefined : bodyValue;\n }\n\n return {\n credentials: 'same-origin',\n headers,\n method,\n ...(method === RequestMethod.Post && Boolean(body) && { body }),\n };\n};\n","import type { BasketOfferItem } from '@ori-events/add-basket-offer';\nimport * as AddBasketOfferFailed from '@ori-events/add-basket-offer-failed';\nimport type { PositionData } from '@ori/analytics-data';\n\nimport type { AddBasketOfferResponse } from '../guards/addBasketOfferResponse';\nimport { isAddBasketOfferErrorResponse } from '../guards/addBasketOfferResponse';\nimport type { RequestUrl } from '../models';\nimport { RequestMethod } from '../models';\nimport { convertToCamelCase } from './convertToCamelCase';\nimport { getHttpRequestSettings } from './getHttpRequestSettings';\n\ninterface AddBasketOfferApplyParams extends PositionData {\n offerId: number;\n}\n\ninterface AddBasketOfferPurchaseParams extends PositionData {\n choiceId: number;\n items: BasketOfferItem[];\n}\n\nexport const addBasketOffer = async (\n url: RequestUrl.AddBasketOffer | RequestUrl.PurchaseBasketOffer,\n params: AddBasketOfferApplyParams | AddBasketOfferPurchaseParams,\n) => {\n const request = await fetch(url, getHttpRequestSettings(params, RequestMethod.Post));\n\n const response = convertToCamelCase((await request.json()) as object);\n\n if (isAddBasketOfferErrorResponse(response)) {\n const event = new CustomEvent(AddBasketOfferFailed.Name, {\n detail: response,\n });\n window.dispatchEvent(event);\n\n return false;\n }\n\n return response;\n};\n","import type * as AddBasketOfferFailed from '@ori-events/add-basket-offer-failed';\nimport type * as BasketUpdated from '@ori-events/basket-updated';\n\nexport type AddBasketOfferResponse = AddBasketOfferFailed.Data | BasketUpdated.Data;\n\nexport const isAddBasketOfferErrorResponse = (\n response: AddBasketOfferResponse,\n): response is AddBasketOfferFailed.Data => 'isSuccess' in response && !response.isSuccess;\n","export const LOG_KEY = 'shopping-bag-provider';\n\nconst getTime = () => {\n const date = new Date();\n const LAST_TWO_DIGITS = -2;\n const LAST_THREE_DIGITS = -3;\n\n return `${date.getHours()}:${`0${date.getMinutes()}`.slice(\n LAST_TWO_DIGITS,\n )}:${`0${date.getSeconds()}`.slice(LAST_TWO_DIGITS)}.${`00${date.getMilliseconds()}`.slice(\n LAST_THREE_DIGITS,\n )}`;\n};\n\nexport const isLoggerOn = () =>\n Boolean(window.localStorage) &&\n Boolean(JSON.parse(localStorage.getItem(`${LOG_KEY} debug`) ?? '0'));\n\nexport const log = (...args: Args) => {\n if (!isLoggerOn()) {\n return;\n }\n\n const time = getTime();\n // eslint-disable-next-line no-console -- simple logger\n console.log(`%c${time} %c${LOG_KEY}:`, 'color: #09c', 'color: #c90;', ...args);\n};\n\nexport const logReceivedEvent = (event: T) =>\n log(`Received ${event.type} event:\\n\\t`, event);\n","import { log } from './log';\n\nconst pagePathPatterns = ['/shopping/basket'];\n\nexport const isPageMarkedForCacheCleanup = () => {\n const isCleanupPage = pagePathPatterns.some((item) => window.location.pathname.includes(item));\n if (isCleanupPage) {\n log('Cache cleanup is always requested for current page.');\n }\n\n return isCleanupPage;\n};\n","import * as BasketUpdated from '@ori-events/basket-updated';\n\nimport type { UpdateEventType } from '../models';\n\nexport const dispatchBasketUpdatedEvent = (\n detail: BasketUpdated.Data,\n eventType: UpdateEventType = BasketUpdated.Name,\n) => {\n const event = new CustomEvent(eventType, {\n detail,\n });\n window.dispatchEvent(event);\n};\n\nexport default dispatchBasketUpdatedEvent;\n","export const getCookie = (cookieName: string) => {\n const match = document.cookie.match(new RegExp(`${cookieName}=([^;]+)`));\n\n return match ? match[1] : undefined;\n};\n","import { getCookie } from './cookies';\nimport { adler32 } from './hashes';\nimport { log } from './log';\n\nexport const validDataTimeout = 300000; // 5 minutes in ms\nexport const contextKey = 'shoppingContext';\nexport const userCookieName = 'ShoppingKey';\nexport const scheduledCleanupKey = 'shopping-bag-provider cache cleanup';\n\nexport interface StoredValue {\n savedTimestamp: number;\n value: T;\n userCheck: number;\n}\n\nexport const isValidTimestamp = (timestamp: number) => Date.now() - timestamp <= validDataTimeout;\n\n// Both sessionStorage or localStorage could be used here.\n// The sessionStorage doesn't support triggering syncing events on other browser tabs.\n// The sessionStorage should clean up stored data after the browser tab gets closed.\n// But the browser's restore-session-on-reopen functionality may clash with this.\n// Both storage types have no connection with server-side session,\n// so, if working with server session data, manual cleanups / refreshing\n// has to be solved anyway.\nexport const storage = window.localStorage;\nexport const isStorageAvailable = Boolean(storage);\nif (!isStorageAvailable) {\n log('Storage is not available.');\n}\n\n// In Online session, there should always be some value set.\n// The 'unknown' value is just a fallback for testing.\nexport const getUserCheck = () => adler32((getCookie(userCookieName) ?? '').trim() || 'unknown');\n\nconst parseValue = (serializedData: string) => {\n let parsedValue: StoredValue | undefined;\n try {\n parsedValue = JSON.parse(serializedData) as StoredValue;\n } catch (error) {\n log(`Error parsing serialized data:`, error);\n }\n\n return parsedValue;\n};\n\nexport const getItem = (key: string): T | undefined => {\n if (!isStorageAvailable) {\n return undefined;\n }\n\n const data = storage.getItem(key);\n if (!data) {\n log(`Item with key '${key}' wasn't found in storage.`);\n\n return undefined;\n }\n\n const parsedValue = parseValue(data);\n if (!parsedValue) {\n log(`Error getting stored item with key '${key}'.`);\n\n return undefined;\n }\n\n const { savedTimestamp, value, userCheck } = parsedValue;\n if (!isValidTimestamp(savedTimestamp)) {\n storage.removeItem(key);\n log(`Stored item with key '${key}' has expired and was deleted.`);\n\n return undefined;\n }\n\n if (userCheck !== getUserCheck()) {\n storage.removeItem(key);\n log(`Item with key '${key}' was stored for different user and was deleted.`);\n\n return undefined;\n }\n\n log(`Item with key ${key} was found in storage.\\n\\t`, parsedValue);\n\n return value;\n};\n\nexport const setItem = (key: string, value: T) => {\n if (!isStorageAvailable) {\n return false;\n }\n\n const data: StoredValue = {\n savedTimestamp: Date.now(),\n value,\n userCheck: getUserCheck(),\n };\n\n try {\n storage.setItem(key, JSON.stringify(data));\n log(`Stored item with key '${key}', value:\\n\\t`, data);\n } catch (error) {\n log(`Error storing item with ${key}:`, error);\n\n return false;\n }\n\n return true;\n};\n\nexport const removeItem = (key: string) => {\n try {\n storage.removeItem(key);\n log(`Stored item with key '${key}' was removed.`);\n } catch (error) {\n log(`Error removing item with key '${key}':`, error);\n\n return false;\n }\n\n return true;\n};\n\nexport const isScheduledCacheCleanup = (): boolean => {\n if (!isStorageAvailable) {\n return false;\n }\n\n const isScheduled = Boolean(storage.getItem(scheduledCleanupKey));\n if (isScheduled) {\n log('Cache cleanup was scheduled with last page reload.');\n }\n\n return isScheduled;\n};\n\nexport const removeScheduledCacheCleanup = () => storage.removeItem(scheduledCleanupKey);\n\nexport const listenToStoredItemChanges = (\n key: string,\n callback?: (value: T | undefined) => unknown,\n) => {\n const eventName = 'storage';\n const eventListener = ((event: StorageEvent) => {\n if (event.storageArea !== storage || event.key !== key) {\n return undefined;\n }\n\n log(`Storage change event from another browser tab was received for item with key '${key}'.`);\n if (event.newValue === null) {\n log(`Stored item with '${key}' was removed in another browser window.`);\n removeItem(key);\n\n return callback?.(undefined);\n }\n\n const parsedValue = parseValue(event.newValue);\n if (!parsedValue) {\n return undefined;\n }\n\n try {\n storage.setItem(key, event.newValue);\n log(`Stored item with key '${key}', value:\\n\\t`, parsedValue);\n } catch (error) {\n log(`Error storing item with key '${key}':`, error);\n }\n\n return callback?.(parsedValue.value);\n }) as EventListener;\n\n return { eventName, eventListener };\n};\n","export const adler32 = (data: string) => {\n const MOD_ADLER = 65521;\n const BITS_MOVED = 16;\n const { length } = data;\n\n let a = 1;\n let b = 0;\n\n for (let i = 0; i < length; i++) {\n // eslint-disable-next-line unicorn/prefer-code-point -- x\n a += data.charCodeAt(i);\n b += a;\n }\n\n a %= MOD_ADLER;\n b %= MOD_ADLER;\n\n // eslint-disable-next-line no-bitwise -- x\n return (b << BITS_MOVED) | a;\n};\n","import { isErrorResponse } from '@ori-events/failed-event-data';\nexport var Name = 'update-basket-item-failed';\nexport var UpdateBasketItemFailedEvent = Name;\nexport var isUpdateBasketItemErrorResponse = function isUpdateBasketItemErrorResponse(response) {\n return isErrorResponse(response);\n};","import { isErrorResponse } from '@ori-events/failed-event-data';\nexport var Name = 'add-catalogue-offer-failed';\nexport var AddCatalogueOfferFailedEvent = Name;\nexport var isAddCatalogueOfferErrorResponse = function isAddCatalogueOfferErrorResponse(response) {\n return isErrorResponse(response);\n};","import { isErrorResponse } from '@ori-events/failed-event-data';\nexport var Name = 'add-customer-order-failed';\nexport var AddCustomerOrderFailedEvent = Name;\nexport var isAddCustomerOrderErrorResponse = function isAddCustomerOrderErrorResponse(response) {\n return isErrorResponse(response);\n};","import { isErrorResponse } from '@ori-events/failed-event-data';\nexport var Name = 'add-free-shipping-offer-failed';\nexport var AddFreeShippingOfferFailedEvent = Name;\nexport var isAddFreeShippingOfferErrorResponse = function isAddFreeShippingOfferErrorResponse(response) {\n return isErrorResponse(response);\n};","import { isErrorResponse } from '@ori-events/failed-event-data';\nexport var Name = 'add-to-basket-failed';\nexport var AddToBasketFailedEvent = Name;\nexport var isAddToBasketErrorResponse = function isAddToBasketErrorResponse(response) {\n return isErrorResponse(response);\n};","export var Name = 'show-loyalty-dialog';\nexport var ShowLoyaltyDialogEvent = Name;","import type * as AddToBasket from '@ori-events/add-to-basket';\nimport * as AddToBasketFailed from '@ori-events/add-to-basket-failed';\nimport * as ShowLoyaltyDialog from '@ori-events/show-loyalty-dialog';\nimport type { PositionData } from '@ori/analytics-data';\n\nimport { convertToCamelCase } from '.';\nimport type { AddToBasketResponse } from '../guards/addToBasketResponse';\nimport {\n isAddToBasketErrorResponse,\n isAddToBasketLoyaltyResponseResponse,\n isAddToBasketSuccessResponse,\n} from '../guards/addToBasketResponse';\nimport { RequestMethod } from '../models';\nimport { getHttpRequestSettings } from './getHttpRequestSettings';\n\nexport interface AddToBasketParams extends AddToBasket.Data, PositionData {\n choiceId?: number | null;\n catalogueItemId?: string;\n}\n\nexport default async (url: string, params: AddToBasketParams, buyingMethod: AddToBasket.Method) => {\n const { itemCode, placement, quantity } = params;\n const request = await fetch(url, getHttpRequestSettings(params, RequestMethod.Post));\n\n const response = convertToCamelCase((await request.json()) as object);\n\n if (isAddToBasketLoyaltyResponseResponse(response)) {\n const event = new CustomEvent(ShowLoyaltyDialog.Name, {\n detail: {\n ...response,\n itemCode,\n placement,\n quantity,\n },\n });\n window.dispatchEvent(event);\n\n return false;\n }\n\n if (isAddToBasketSuccessResponse(response)) {\n return {\n ...response,\n lastAddedItem: {\n itemCode,\n method: buyingMethod,\n quantity,\n },\n };\n }\n\n if (isAddToBasketErrorResponse(response)) {\n const event = new CustomEvent(AddToBasketFailed.Name, {\n detail: response,\n });\n window.dispatchEvent(event);\n\n return false;\n }\n\n return false;\n};\n","import type * as AddToBasketFailed from '@ori-events/add-to-basket-failed';\nimport type * as BasketUpdated from '@ori-events/basket-updated';\nimport type * as ShowLoyaltyDialog from '@ori-events/show-loyalty-dialog';\n\nexport type AddToBasketResponse =\n | AddToBasketFailed.Data\n | BasketUpdated.Data\n | ShowLoyaltyDialog.Data;\n\nexport const isAddToBasketErrorResponse = (\n response: AddToBasketResponse,\n): response is AddToBasketFailed.Data =>\n typeof (response as AddToBasketFailed.Data).isSuccess === 'boolean' &&\n !(response as AddToBasketFailed.Data).isSuccess;\n\nexport const isAddToBasketLoyaltyResponseResponse = (\n response: AddToBasketResponse,\n): response is ShowLoyaltyDialog.Data =>\n Boolean((response as ShowLoyaltyDialog.Data).loyaltyPoints);\n\nexport const isAddToBasketSuccessResponse = (\n response: AddToBasketResponse,\n): response is BasketUpdated.Data => Boolean((response as BasketUpdated.Data).shoppingBag);\n","import { isErrorResponse } from '@ori-events/failed-event-data';\nexport var Name = 'add-voucher-failed';\nexport var AddVoucherFailedEvent = Name;\nexport var isAddVoucherErrorResponse = function isAddVoucherErrorResponse(response) {\n return isErrorResponse(response);\n};","import { isErrorResponse } from '@ori-events/failed-event-data';\nexport var Name = 'cancel-subscription-failed';\nexport var CancelSubscriptionFailedEvent = Name;\nexport var isCancelSubscriptionErrorResponse = function isCancelSubscriptionErrorResponse(response) {\n return isErrorResponse(response);\n};","import { isErrorResponse } from '@ori-events/failed-event-data';\nexport var Name = 'delay-subscription-failed';\nexport var DelaySubscriptionFailedEvent = Name;\nexport var isDelaySubscriptionErrorResponse = function isDelaySubscriptionErrorResponse(response) {\n return isErrorResponse(response);\n};","import { isErrorResponse } from '@ori-events/failed-event-data';\nexport var Name = 'remove-customer-order-failed';\nexport var RemoveCustomerOrderFailedEvent = Name;\nexport var isRemoveCustomerOrderErrorResponse = function isRemoveCustomerOrderErrorResponse(response) {\n return isErrorResponse(response);\n};","import { isErrorResponse } from '@ori-events/failed-event-data';\nexport var Name = 'remove-voucher-failed';\nexport var RemoveVoucherFailedEvent = Name;\nexport var isRemoveVoucherErrorResponse = function isRemoveVoucherErrorResponse(response) {\n return isErrorResponse(response);\n};","import { isErrorResponse } from '@ori-events/failed-event-data';\nexport var Name = 'replace-shopping-bag-item-failed';\nexport var ReplaceShoppingBagItemFailedEvent = Name;\nexport var isReplaceShoppingBagItemErrorResponse = function isReplaceShoppingBagItemErrorResponse(response) {\n return isErrorResponse(response);\n};","import { isErrorResponse } from '@ori-events/failed-event-data';\nexport var Name = 'update-customer-order-item-failed';\nexport var UpdateCustomerOrderItemFailedEvent = Name;\nexport var isUpdateCustomerOrderItemErrorResponse = function isUpdateCustomerOrderItemErrorResponse(response) {\n return isErrorResponse(response);\n};","import { isErrorResponse } from '@ori-events/failed-event-data';\nexport var Name = 'update-delivery-channel-failed';\nexport var UpdateDeliveryChannelFailedEvent = Name;\nexport var isUpdateDeliveryChannelErrorResponse = function isUpdateDeliveryChannelErrorResponse(response) {\n return isErrorResponse(response);\n};","export const putRequestOptions = {\n method: 'PUT',\n // eslint-disable-next-line @typescript-eslint/naming-convention -- predefined HTTP header name\n headers: { 'Content-Type': 'application/json' },\n};\n","import { isErrorResponse } from '@ori-events/failed-event-data';\nexport var Name = 'update-delivery-failed';\nexport var UpdateDeliveryFailedEvent = Name;\nexport var isUpdateDeliveryErrorResponse = function isUpdateDeliveryErrorResponse(response) {\n return isErrorResponse(response);\n};","import { isErrorResponse } from '@ori-events/failed-event-data';\nexport var Name = 'update-donation-failed';\nexport var UpdateDonationFailedEvent = Name;\nexport var isUpdateDonationFailedResponse = function isUpdateDonationFailedResponse(response) {\n return isErrorResponse(response);\n};","import { isErrorResponse } from '@ori-events/failed-event-data';\nexport var Name = 'update-payment-provider-failed';\nexport var UpdatePaymentProviderFailedEvent = Name;\nexport var isUpdatePaymentProviderFailedResponse = function isUpdatePaymentProviderFailedResponse(response) {\n return isErrorResponse(response);\n};","import * as AcceptNotification from '@ori-events/accept-notification';\nimport * as AddBackorderDemand from '@ori-events/add-backorder-demand';\nimport * as AddBasketOffer from '@ori-events/add-basket-offer';\nimport * as AddCatalogueOffer from '@ori-events/add-catalogue-offer';\nimport * as AddCustomerOrder from '@ori-events/add-customer-order';\nimport * as AddFreeShippingOffer from '@ori-events/add-free-shipping-offer';\nimport * as AddToBasket from '@ori-events/add-to-basket';\nimport * as AddVoucher from '@ori-events/add-voucher';\nimport * as BasketUpdated from '@ori-events/basket-updated';\nimport * as CancelBackorderDemand from '@ori-events/cancel-backorder-demand';\nimport * as CancelSubscription from '@ori-events/cancel-subscription';\nimport * as ClearBasket from '@ori-events/clear-basket';\nimport * as DelaySubscription from '@ori-events/delay-subscription';\nimport * as LoyaltyDialogResult from '@ori-events/loyalty-dialog-result';\nimport * as PlaceOrderRequested from '@ori-events/place-order-requested';\nimport * as RemoveBasketItem from '@ori-events/remove-basket-item';\nimport * as RemoveCustomerOrder from '@ori-events/remove-customer-order';\nimport * as RemoveVoucher from '@ori-events/remove-voucher';\nimport * as ReplaceShoppingBagItem from '@ori-events/replace-shopping-bag-item';\nimport * as RequestClearShoppingCache from '@ori-events/request-clear-shopping-cache';\nimport * as RequestShoppingContext from '@ori-events/request-shopping-context';\nimport * as ResetShippingSelection from '@ori-events/reset-shipping-selection';\nimport { ShoppingContextLoadedEvent } from '@ori-events/shopping-context-loaded';\nimport * as UpdateBasketItem from '@ori-events/update-basket-item';\nimport * as UpdateCustomerOrderItem from '@ori-events/update-customer-order-item';\nimport * as UpdateDelivery from '@ori-events/update-delivery';\nimport * as UpdateDeliveryChannel from '@ori-events/update-delivery-channel';\nimport * as UpdateDonation from '@ori-events/update-donation';\nimport * as UpdateOfferItem from '@ori-events/update-offer-item';\nimport * as UpdateOfferItems from '@ori-events/update-offer-items';\nimport * as UpdatePaymentProvider from '@ori-events/update-payment-provider';\n\nimport acceptNotificationHandler from './handlers/acceptNotificationHandler';\nimport addBackorderDemandHandler from './handlers/addBackorderDemandHandler';\nimport addBasketOfferHandler from './handlers/addBasketOfferHandler';\nimport addCatalogueOfferHandler from './handlers/addCatalogueOfferHandler';\nimport addCustomerOrderHandler from './handlers/addCustomerOrderHandler';\nimport addFreeShippingOfferHandler from './handlers/addFreeShippingOfferHandler';\nimport addToBasketHandler from './handlers/addToBasketHandler';\nimport addVoucherHandler from './handlers/addVoucherHandler';\nimport cancelBackorderDemandHandler from './handlers/cancelBackorderDemandHandler';\nimport cancelSubscriptionHandler from './handlers/cancelSubscriptionHandler';\nimport checkLoyaltyDialogResultAndAddToBasketHandler from './handlers/checkLoyaltyDialogResultAndAddToBasketHandler';\nimport clearBasketHandler from './handlers/clearBasketHandler';\nimport delaySubscriptionHandler from './handlers/delaySubscriptionHandler';\nimport removeCustomerOrderHandler from './handlers/removeCustomerOrderHandler';\nimport removeFromBasketHandler from './handlers/removeFromBasketHandler';\nimport removeVoucherHandler from './handlers/removeVoucherHandler';\nimport replaceShoppingBagItemHandler from './handlers/replaceShoppingBagItemHandler';\nimport requestShoppingContextHandler from './handlers/requestShoppingContextHandler';\nimport resetShippingSelectionHandler from './handlers/resetShippingSelectionHandler';\nimport updateBasketItemHandler from './handlers/updateBasketItemHandler';\nimport updateCustomerOrderItemHandler from './handlers/updateCustomerOrderItemHandler';\nimport updateDeliveryChannelHandler from './handlers/updateDeliveryChannelHandler';\nimport updateDeliveryHandler from './handlers/updateDeliveryHandler';\nimport updateDonationHandler from './handlers/updateDonationHandler';\nimport updateOfferItemHandler from './handlers/updateOfferItemHandler';\nimport updateOfferItemsHandler from './handlers/updateOfferItemsHandler';\nimport updatePaymentProviderHandler from './handlers/updatePaymentProviderHandler';\nimport {\n contextKey,\n dispatchBasketUpdatedEvent,\n getItem,\n isPageMarkedForCacheCleanup,\n isScheduledCacheCleanup,\n isStorageAvailable,\n listenToStoredItemChanges,\n log,\n logReceivedEvent,\n removeItem,\n removeScheduledCacheCleanup,\n setItem,\n} from './helpers';\nimport type { UpdateEventType } from './models';\n\ninterface Configuration {\n useBrowserTabsSynchronization: boolean;\n useLocalStorage: boolean;\n}\n\ntype ContextUpdateEventHandler = (\n event: T,\n) => Promise;\n\nconst getCachedContext = () => getItem(contextKey);\nconst setCachedContext = (value: BasketUpdated.Data) => setItem(contextKey, value);\nconst clearCachedContext = () => removeItem(contextKey);\n\nexport const contextUpdatesMap = [\n [AcceptNotification.Name, acceptNotificationHandler],\n [AddBackorderDemand.Name, addBackorderDemandHandler],\n [AddBasketOffer.Name, addBasketOfferHandler],\n [AddCatalogueOffer.Name, addCatalogueOfferHandler],\n [AddCustomerOrder.Name, addCustomerOrderHandler],\n [AddFreeShippingOffer.Name, addFreeShippingOfferHandler],\n [AddToBasket.Name, addToBasketHandler],\n [AddVoucher.Name, addVoucherHandler],\n [CancelBackorderDemand.Name, cancelBackorderDemandHandler],\n [CancelSubscription.Name, cancelSubscriptionHandler],\n [ClearBasket.Name, clearBasketHandler],\n [DelaySubscription.Name, delaySubscriptionHandler],\n [LoyaltyDialogResult.Name, checkLoyaltyDialogResultAndAddToBasketHandler],\n [RemoveBasketItem.Name, removeFromBasketHandler],\n [RemoveCustomerOrder.Name, removeCustomerOrderHandler],\n [RemoveVoucher.Name, removeVoucherHandler],\n [ReplaceShoppingBagItem.Name, replaceShoppingBagItemHandler],\n [ResetShippingSelection.Name, resetShippingSelectionHandler],\n [UpdateBasketItem.Name, updateBasketItemHandler],\n [UpdateCustomerOrderItem.Name, updateCustomerOrderItemHandler],\n [UpdateDelivery.Name, updateDeliveryHandler],\n [UpdateDeliveryChannel.Name, updateDeliveryChannelHandler],\n [UpdateDonation.Name, updateDonationHandler],\n [UpdateOfferItems.Name, updateOfferItemsHandler],\n [UpdateOfferItem.Name, updateOfferItemHandler],\n [UpdatePaymentProvider.Name, updatePaymentProviderHandler],\n] as const;\n\nexport class BasketProvider {\n static readonly CONFIG_ELEMENT_ID = 'basket-provider-data';\n\n private eventListeners: Array<[string, EventListener]> = [];\n private isBrowserStorageUsed = false;\n private isBrowserTabsSynchronizationUsed = false;\n private isRequestingShoppingContext = false;\n private shoppingContext?: BasketUpdated.Data;\n\n constructor() {\n this.parseConfiguration();\n if (this.isBrowserStorageUsed) {\n if (isPageMarkedForCacheCleanup() || isScheduledCacheCleanup()) {\n this.clearContext();\n removeScheduledCacheCleanup();\n } else {\n this.getStoredContext();\n }\n }\n this.initEventListeners();\n }\n\n getConfiguration() {\n const { isBrowserStorageUsed, isBrowserTabsSynchronizationUsed } = this;\n\n return {\n isBrowserStorageUsed,\n isBrowserTabsSynchronizationUsed,\n };\n }\n\n getContext() {\n return this.shoppingContext ? { ...this.shoppingContext } : undefined;\n }\n\n private initEventListeners(): void {\n if (this.eventListeners.length) {\n this.removeEventListeners();\n }\n\n this.eventListeners = contextUpdatesMap.map(([eventName, handler]) => {\n const updateHandler = handler as ContextUpdateEventHandler;\n const action = (async (event: T) => {\n logReceivedEvent(event);\n const data = await updateHandler(event);\n if (data === false) {\n log('Shopping context update failed.');\n } else {\n this.updateContext(data, BasketUpdated.Name);\n }\n }) as EventListener;\n\n return [eventName, action];\n });\n\n const requestShoppingContextListener = (async (event: T) => {\n logReceivedEvent(event);\n\n if (this.shoppingContext) {\n log(`Context data was loaded before. Triggering ${ShoppingContextLoadedEvent} event ...`);\n dispatchBasketUpdatedEvent(this.shoppingContext, ShoppingContextLoadedEvent);\n\n return;\n }\n\n if (this.isRequestingShoppingContext) {\n log('Shopping context was already requested. Waiting for response ...');\n\n return;\n }\n\n log('Loading shopping context ...');\n this.isRequestingShoppingContext = true;\n const newData = await requestShoppingContextHandler();\n this.isRequestingShoppingContext = false;\n log('Shopping context was loaded.');\n this.updateContext(newData, ShoppingContextLoadedEvent);\n }) as EventListener;\n\n this.eventListeners.push(\n // Requesting shopping context.\n [RequestShoppingContext.Name, requestShoppingContextListener],\n\n // This is now called when the user requests creating a new order.\n // That means that the cache should be cleared. But we don't know yet\n // if the create order action succeeds. Getting exact order creation\n // result / success might be problematic, as there are page redirects\n // involved, and after page reload, it is too late for clearing caches.\n // So current solution calls the PlaceOrderRequested event before\n // calling the request on server, so that there is enough time to\n // do this cache cleanup here before the redirects happen.\n // ATM, the redirect is being done in legacy module & this logic might\n // change after rewriting to React.\n [PlaceOrderRequested.Name, (event) => this.clearContextOnEvent(event)],\n\n // This is now called for other cases when clearing context data is needed.\n [RequestClearShoppingCache.Name, (event) => this.clearContextOnEvent(event)],\n );\n\n // If there was a change in stored data from another browser tab,\n // if the context value was set, update the context with triggering\n // basket-updated event. Other components need to be informed about\n // the new state & this will not happen on page load, but later.\n // So the basket-updated event should be fine for this.\n if (this.isBrowserTabsSynchronizationUsed) {\n const { eventName, eventListener } = listenToStoredItemChanges(\n contextKey,\n (value) => {\n if (value) {\n this.updateContext(value, BasketUpdated.Name, false);\n }\n },\n );\n this.eventListeners.push([eventName, eventListener]);\n }\n\n this.eventListeners.forEach(([eventName, action]) =>\n window.addEventListener(eventName, action),\n );\n log('Event listeners are connected.');\n }\n\n removeEventListeners(): void {\n this.eventListeners.forEach(([eventName, action]) =>\n window.removeEventListener(eventName, action),\n );\n this.eventListeners = [];\n log('Old event listeners were disconnected.');\n }\n\n private parseConfiguration(): void {\n const configElement = document.getElementById(BasketProvider.CONFIG_ELEMENT_ID);\n const rawData = configElement?.innerHTML ?? '{}';\n log('Raw configuration data:\\n\\t', rawData);\n const {\n // not sure yet if a feature toggle should be created for this\n // default ATM set to true for testing\n useBrowserTabsSynchronization = true,\n // feature toggle\n useLocalStorage = false,\n } = JSON.parse(rawData) as Configuration;\n\n this.isBrowserStorageUsed = isStorageAvailable && useLocalStorage;\n this.isBrowserTabsSynchronizationUsed =\n this.isBrowserStorageUsed && useBrowserTabsSynchronization;\n\n if (configElement) {\n log(`Configuration was parsed from element #${BasketProvider.CONFIG_ELEMENT_ID}.`);\n }\n log(\n 'Current configuration:',\n '\\n\\tisBrowserStorageUsed:',\n this.isBrowserStorageUsed,\n '\\n\\tisBrowserTabsSynchronizationUsed:',\n this.isBrowserTabsSynchronizationUsed,\n );\n }\n\n private getStoredContext(): void {\n const newData = getCachedContext();\n if (!newData) {\n return;\n }\n this.updateContext(newData, undefined, false);\n log('Restored context data from storage.');\n }\n\n private updateContext(\n newData: BasketUpdated.Data,\n eventTypeToBeTriggered?: UpdateEventType,\n shouldStoreData = true,\n ): void {\n // compare old & new state - TODO\n this.shoppingContext = newData;\n if (shouldStoreData && this.isBrowserStorageUsed) {\n setCachedContext(newData);\n log('Stored context was updated with new data:\\n\\t', newData);\n } else {\n log('Context was updated with new data:\\n\\t', newData);\n }\n if (eventTypeToBeTriggered) {\n log(`Triggering ${eventTypeToBeTriggered} event ...`);\n dispatchBasketUpdatedEvent(newData, eventTypeToBeTriggered);\n }\n }\n\n private clearContext(): void {\n log('Clearing stored shopping context data ...');\n this.shoppingContext = undefined;\n clearCachedContext();\n }\n\n private clearContextOnEvent(event: Event): void {\n logReceivedEvent(event as CustomEvent);\n this.clearContext();\n }\n}\n\nexport default BasketProvider;\n","import type * as AcceptNotification from '@ori-events/accept-notification';\nimport type {\n Data as ErrorData,\n AcceptNotificationResponse,\n} from '@ori-events/accept-notification-failed';\nimport {\n isAcceptNotificationErrorResponse,\n Name as ErrorEventName,\n} from '@ori-events/accept-notification-failed';\n\nimport { convertToCamelCase } from '../helpers';\nimport { RequestUrl } from '../models';\n\ntype Data = AcceptNotification.Data;\n\nexport default async function acceptNotificationHandler({\n detail: { reasonId },\n}: CustomEvent) {\n const request = await fetch(`${RequestUrl.AcceptNotification}?reasonId=${reasonId}`);\n\n const response = convertToCamelCase((await request.json()) as object);\n\n if (isAcceptNotificationErrorResponse(response)) {\n const errorEvent = new CustomEvent(ErrorEventName, {\n detail: response,\n });\n window.dispatchEvent(errorEvent);\n\n return false;\n }\n\n return response;\n}\n","import type * as AddBackorderDemand from '@ori-events/add-backorder-demand';\nimport type * as BasketUpdated from '@ori-events/basket-updated';\nimport type {\n Data as ErrorData,\n UpdateBasketItemResponse,\n} from '@ori-events/update-basket-item-failed';\nimport {\n isUpdateBasketItemErrorResponse,\n Name as ErrorEventName,\n} from '@ori-events/update-basket-item-failed';\nimport type { PositionData } from '@ori/analytics-data';\n\nimport { convertToCamelCase, getHttpRequestSettings } from '../helpers';\nimport { RequestUrl } from '../models';\n\ninterface Data extends AddBackorderDemand.Data, PositionData {}\n\nexport default async ({ detail: { lineNumber, placement, quantity } }: CustomEvent) => {\n if (typeof quantity === 'number' && quantity > 0) {\n const requestItemUpdate = await fetch(\n `${RequestUrl.UpdateBasketItem}?lineNumber=${lineNumber}&quantity=${quantity}`,\n getHttpRequestSettings({ placement }),\n );\n\n const response = convertToCamelCase(\n (await requestItemUpdate.json()) as object,\n );\n\n if (isUpdateBasketItemErrorResponse(response)) {\n const errorEvent = new CustomEvent(ErrorEventName, {\n detail: response,\n });\n window.dispatchEvent(errorEvent);\n\n return false;\n }\n }\n\n const request = await fetch(\n `${RequestUrl.AddBackorderDemand}?lineNumber=${lineNumber}`,\n getHttpRequestSettings(),\n );\n\n return convertToCamelCase((await request.json()) as object);\n};\n","import type * as AddBasketOffer from '@ori-events/add-basket-offer';\nimport type { PositionData } from '@ori/analytics-data';\n\nimport { isAddBasketOfferPurchaseEvent } from '../guards/addBasketOfferRequest';\nimport { addBasketOffer } from '../helpers';\nimport { RequestUrl } from '../models';\n\ninterface Data extends AddBasketOffer.Data, PositionData {}\ninterface PurchaseData extends AddBasketOffer.AddBasketOfferPurchaseData, PositionData {}\n\nexport default async (event: AddBasketOffer.Event) => {\n if (isAddBasketOfferPurchaseEvent(event)) {\n const {\n detail: { items, offerId: choiceId, placement: currentPlacement },\n } = event as CustomEvent;\n\n return addBasketOffer(RequestUrl.PurchaseBasketOffer, {\n choiceId,\n items,\n placement: currentPlacement,\n });\n }\n\n const {\n detail: { offerId, placement },\n } = event as CustomEvent;\n\n return addBasketOffer(RequestUrl.AddBasketOffer, {\n offerId,\n placement,\n });\n};\n","import type { Event, AddBasketOfferPurchaseData } from '@ori-events/add-basket-offer';\n\nexport const isAddBasketOfferPurchaseEvent = (\n event: Event,\n): event is Event => Boolean(event.detail.items);\n","import type * as AddCatalogueOffer from '@ori-events/add-catalogue-offer';\nimport * as AddCatalogueOfferFailed from '@ori-events/add-catalogue-offer-failed';\nimport type { PositionData } from '@ori/analytics-data';\n\nimport { convertToCamelCase, getHttpRequestSettings } from '../helpers';\nimport { RequestMethod, RequestUrl } from '../models';\n\ninterface Data extends AddCatalogueOffer.Data, PositionData {}\n\nexport const dispatchAddCatalogueOfferFailedEvent = (detail: AddCatalogueOfferFailed.Data) => {\n const event = new CustomEvent(AddCatalogueOfferFailed.Name, {\n detail,\n });\n window.dispatchEvent(event);\n};\n\nexport const addCatalogueOfferHandler = async ({\n detail: { offerId, placement },\n}: CustomEvent) => {\n const request = await fetch(\n RequestUrl.AddCatalogueOffer,\n getHttpRequestSettings({ offerId, placement }, RequestMethod.Post),\n );\n\n const response = convertToCamelCase(\n (await request.json()) as object,\n );\n if (AddCatalogueOfferFailed.isAddCatalogueOfferErrorResponse(response)) {\n dispatchAddCatalogueOfferFailedEvent(response);\n\n return false;\n }\n\n return response;\n};\n\nexport default addCatalogueOfferHandler;\n","import type * as AddCustomerOrder from '@ori-events/add-customer-order';\nimport * as AddCustomerOrderFailed from '@ori-events/add-customer-order-failed';\nimport type { PositionData } from '@ori/analytics-data';\n\nimport type { AddCustomerOrderResponse } from '../guards/addCustomerOrderResponse';\nimport {\n isCustomerOrderErrorResponse,\n isCustomerOrderSuccessResponse,\n} from '../guards/addCustomerOrderResponse';\nimport { convertToCamelCase, getHttpRequestSettings } from '../helpers';\nimport { RequestUrl } from '../models';\n\ninterface Data extends AddCustomerOrder.Data, PositionData {}\n\nexport default async ({ detail: { orderIds, placement } }: CustomEvent) => {\n const url = new URL(RequestUrl.AddCustomerOrder, window.location.href);\n orderIds.forEach((id) => url.searchParams.append('orderIds', String(id)));\n\n const request = await fetch(url.toString(), getHttpRequestSettings({ placement }));\n\n const response = convertToCamelCase((await request.json()) as object);\n\n if (isCustomerOrderSuccessResponse(response)) {\n return {\n ...response,\n lastAddedCustomerOrderIds: orderIds,\n };\n }\n\n if (isCustomerOrderErrorResponse(response)) {\n const errorEvent = new CustomEvent(AddCustomerOrderFailed.Name, {\n detail: response,\n });\n window.dispatchEvent(errorEvent);\n\n return false;\n }\n\n return false;\n};\n","import type * as AddCustomerOrderFailed from '@ori-events/add-customer-order-failed';\nimport type * as BasketUpdated from '@ori-events/basket-updated';\n\nexport type AddCustomerOrderResponse = AddCustomerOrderFailed.Data | BasketUpdated.Data;\n\nexport const isCustomerOrderSuccessResponse = (\n response: AddCustomerOrderResponse,\n): response is BasketUpdated.Data => Boolean((response as BasketUpdated.Data).shoppingBag);\n\nexport const isCustomerOrderErrorResponse = (\n response: AddCustomerOrderResponse,\n): response is AddCustomerOrderFailed.Data =>\n typeof (response as AddCustomerOrderFailed.Data).isSuccess === 'boolean' &&\n !(response as AddCustomerOrderFailed.Data).isSuccess;\n","import type * as AddFreeShippingOffer from '@ori-events/add-free-shipping-offer';\nimport * as AddFreeShippingOfferFailed from '@ori-events/add-free-shipping-offer-failed';\nimport type { PositionData } from '@ori/analytics-data';\n\nimport { convertToCamelCase, getHttpRequestSettings } from '~/helpers';\nimport { RequestMethod, RequestUrl } from '~/models';\n\ninterface Data extends AddFreeShippingOffer.Data, PositionData {}\n\nexport const dispatchAddFreeShippingOfferFailedEvent = (\n detail: AddFreeShippingOfferFailed.Data,\n) => {\n const event = new CustomEvent(AddFreeShippingOfferFailed.Name, {\n detail,\n });\n window.dispatchEvent(event);\n};\n\nexport const addFreeShippingOfferHandler = async ({\n detail: { itemCode, placement },\n}: CustomEvent) => {\n const request = await fetch(\n RequestUrl.AddFreeShippingOffer,\n getHttpRequestSettings({ itemCode, placement }, RequestMethod.Post),\n );\n\n const response = convertToCamelCase(\n (await request.json()) as object,\n );\n if (AddFreeShippingOfferFailed.isAddFreeShippingOfferErrorResponse(response)) {\n dispatchAddFreeShippingOfferFailedEvent(response);\n\n return false;\n }\n\n return response;\n};\n\nexport default addFreeShippingOfferHandler;\n","import type * as AddToBasket from '@ori-events/add-to-basket';\nimport type { PositionData } from '@ori/analytics-data';\n\nimport addToBasket from '../helpers/addToBasket';\nimport getBuyingURLandMethod from '../helpers/getBuyingURLandMethod';\n\ninterface Data extends AddToBasket.Data, PositionData {}\n\nexport default async ({\n detail: {\n itemCode,\n quantity,\n originalItemCode,\n replacementType,\n method: addToBasketMethod,\n placement,\n },\n}: CustomEvent) => {\n const { url, method } = getBuyingURLandMethod(addToBasketMethod);\n\n return addToBasket(\n url,\n {\n itemCode,\n quantity,\n originalItemCode,\n replacementType,\n placement,\n },\n method,\n );\n};\n","import * as AddToBasket from '@ori-events/add-to-basket';\n\nimport { RequestUrl } from '~/models';\n\ninterface BuyingURLandMethod {\n url: string;\n method: AddToBasket.Method;\n}\n\nexport default (method?: AddToBasket.Method): BuyingURLandMethod => {\n switch (method) {\n case AddToBasket.Method.BUY_FOR_MONEY:\n return {\n url: RequestUrl.AddToBasketForMoney,\n method: AddToBasket.Method.BUY_FOR_MONEY,\n };\n case AddToBasket.Method.BUY_FOR_POINTS:\n return {\n url: RequestUrl.AddToBasketForPointsRewardShop,\n method: AddToBasket.Method.BUY_FOR_POINTS,\n };\n default:\n return {\n url: RequestUrl.AddToBasketCheckLoyalty,\n method: AddToBasket.Method.BUY_FOR_MONEY,\n };\n }\n};\n","import type * as AddVoucher from '@ori-events/add-voucher';\nimport * as AddVoucherFailed from '@ori-events/add-voucher-failed';\nimport type { PositionData } from '@ori/analytics-data';\n\nimport type { AddVoucherResponse } from '../guards/addVoucherResponse';\nimport {\n isAddVoucherSuccessResponse,\n isAddVoucherErrorResponse,\n} from '../guards/addVoucherResponse';\nimport { convertToCamelCase, getHttpRequestSettings } from '../helpers';\nimport { RequestUrl } from '../models';\n\ninterface Data extends AddVoucher.Data, PositionData {}\n\nconst dispatchAddVoucherFailed = (detail: AddVoucherFailed.Data) => {\n const event = new CustomEvent(AddVoucherFailed.Name, {\n detail,\n });\n window.dispatchEvent(event);\n};\n\nexport default async ({ detail: { placement, voucherCode } }: CustomEvent) => {\n const fetchUrl = `${RequestUrl.AddVoucher}?voucherCode=${voucherCode}`;\n const request = await fetch(fetchUrl, getHttpRequestSettings({ placement }));\n\n const response = convertToCamelCase((await request.json()) as object);\n\n if (isAddVoucherSuccessResponse(response)) {\n return response;\n }\n\n if (isAddVoucherErrorResponse(response)) {\n dispatchAddVoucherFailed(response);\n }\n\n return false;\n};\n","import type * as AddVoucherFailed from '@ori-events/add-voucher-failed';\nimport type * as BasketUpdated from '@ori-events/basket-updated';\n\nexport type AddVoucherResponse = AddVoucherFailed.Data | BasketUpdated.Data;\n\nexport const isAddVoucherSuccessResponse = (\n response: AddVoucherResponse,\n): response is BasketUpdated.Data => Boolean((response as BasketUpdated.Data).shoppingBag);\n\nexport const isAddVoucherErrorResponse = (\n response: AddVoucherResponse,\n): response is AddVoucherFailed.Data =>\n typeof (response as AddVoucherFailed.Data).isSuccess === 'boolean' &&\n !(response as AddVoucherFailed.Data).isSuccess;\n","import type * as BasketUpdated from '@ori-events/basket-updated';\nimport type * as CancelBackorderDemand from '@ori-events/cancel-backorder-demand';\nimport type { PositionData } from '@ori/analytics-data';\n\nimport { convertToCamelCase, getHttpRequestSettings } from '../helpers';\nimport { RequestUrl } from '../models';\n\ninterface Data extends CancelBackorderDemand.Data, PositionData {}\n\nexport default async ({ detail: { lineNumber, placement } }: CustomEvent) => {\n const request = await fetch(\n `${RequestUrl.CancelBackorderDemand}?lineNumber=${lineNumber}`,\n getHttpRequestSettings({ placement }),\n );\n\n return convertToCamelCase((await request.json()) as object);\n};\n","import type * as CancelSubscription from '@ori-events/cancel-subscription';\nimport * as CancelSubscriptionFailed from '@ori-events/cancel-subscription-failed';\nimport type { PositionData } from '@ori/analytics-data';\n\nimport { convertToCamelCase, getHttpRequestSettings } from '../helpers';\nimport { RequestUrl } from '../models';\n\ninterface Data extends CancelSubscription.Data, PositionData {}\n\nexport const dispatchCancelSubscriptionFailedEvent = (detail: CancelSubscriptionFailed.Data) => {\n const event = new CustomEvent(CancelSubscriptionFailed.Name, {\n detail,\n });\n window.dispatchEvent(event);\n};\n\nexport default async ({\n detail: { consumerId, packageId, placement, subscriptionId },\n}: CustomEvent) => {\n const request = await fetch(\n `${RequestUrl.CancelSubscription}?consumerId=${consumerId}&subscriptionId=${subscriptionId}&packageId=${packageId}`,\n getHttpRequestSettings({ placement }),\n );\n\n const response = convertToCamelCase(\n (await request.json()) as object,\n );\n\n if (CancelSubscriptionFailed.isCancelSubscriptionErrorResponse(response)) {\n dispatchCancelSubscriptionFailedEvent(response);\n\n return false;\n }\n\n return response;\n};\n","import type * as BasketUpdated from '@ori-events/basket-updated';\n\nimport { convertToCamelCase, getHttpRequestSettings } from '../helpers';\nimport { RequestUrl } from '../models';\n\nexport default async () => {\n const request = await fetch(RequestUrl.ClearBasket, getHttpRequestSettings());\n\n return convertToCamelCase((await request.json()) as object);\n};\n","import type * as DelaySubscription from '@ori-events/delay-subscription';\nimport * as DelaySubscriptionFailed from '@ori-events/delay-subscription-failed';\nimport type { PositionData } from '@ori/analytics-data';\n\nimport type { DelaySubscriptionResponse } from '../guards/delaySubscriptionResponse';\nimport {\n isDelaySubscriptionSuccessResponse,\n isDelaySubscriptionErrorResponse,\n} from '../guards/delaySubscriptionResponse';\nimport { convertToCamelCase, getHttpRequestSettings } from '../helpers';\nimport { RequestMethod, RequestUrl } from '../models';\n\ninterface Data extends DelaySubscription.Data, PositionData {}\n\nexport const dispatchDelaySubscriptionFailedEvent = (detail: DelaySubscriptionFailed.Data) => {\n const event = new CustomEvent(DelaySubscriptionFailed.Name, {\n detail,\n });\n window.dispatchEvent(event);\n};\n\nexport default async ({\n detail: { cycle, placement, step, subscriptionId },\n}: CustomEvent) => {\n const request = await fetch(\n RequestUrl.DelaySubscription,\n getHttpRequestSettings({ cycle, placement, step, subscriptionId }, RequestMethod.Post),\n );\n\n const response = convertToCamelCase((await request.json()) as object);\n\n if (isDelaySubscriptionSuccessResponse(response)) {\n return response;\n }\n\n if (isDelaySubscriptionErrorResponse(response)) {\n dispatchDelaySubscriptionFailedEvent(response);\n }\n\n return false;\n};\n","import type * as BasketUpdated from '@ori-events/basket-updated';\nimport type * as DelaySubscriptionFailed from '@ori-events/delay-subscription-failed';\n\nexport type DelaySubscriptionResponse = BasketUpdated.Data | DelaySubscriptionFailed.Data;\n\nexport const isDelaySubscriptionSuccessResponse = (\n response: DelaySubscriptionResponse,\n): response is BasketUpdated.Data => Boolean((response as BasketUpdated.Data).shoppingBag);\n\nexport const isDelaySubscriptionErrorResponse = (\n response: DelaySubscriptionResponse,\n): response is DelaySubscriptionFailed.Data =>\n typeof (response as DelaySubscriptionFailed.Data).isSuccess === 'boolean' &&\n !(response as DelaySubscriptionFailed.Data).isSuccess;\n","import * as AddToBasket from '@ori-events/add-to-basket';\nimport * as LoyaltyDialogResult from '@ori-events/loyalty-dialog-result';\n\nimport addToBasket from '../helpers/addToBasket';\nimport { RequestUrl } from '../models';\n\nexport default ({ detail }: LoyaltyDialogResult.Event) => {\n const { result } = detail;\n\n if (LoyaltyDialogResult.isLoyaltyCloseResult(result)) {\n return false;\n }\n\n if (LoyaltyDialogResult.isLoyaltyBuyForPointsResult(result)) {\n const { catalogueItemId, choiceId, itemCode, quantity, placement } = detail;\n\n return addToBasket(\n RequestUrl.AddToBasketForPoints,\n {\n itemCode,\n quantity,\n choiceId,\n catalogueItemId,\n placement,\n },\n AddToBasket.Method.BUY_FOR_POINTS,\n );\n }\n\n if (LoyaltyDialogResult.isLoyaltyBuyForMoneyResult(result)) {\n const { itemCode, quantity, originalItemCode, replacementType, placement } = detail;\n\n return addToBasket(\n RequestUrl.AddToBasketForMoney,\n {\n itemCode,\n quantity,\n originalItemCode,\n replacementType,\n placement,\n },\n AddToBasket.Method.BUY_FOR_MONEY,\n );\n }\n\n return false;\n};\n","import type * as BasketUpdated from '@ori-events/basket-updated';\nimport type * as RemoveBasketItem from '@ori-events/remove-basket-item';\nimport type { PositionData } from '@ori/analytics-data';\n\nimport { convertToCamelCase, getHttpRequestSettings } from '../helpers';\nimport { RequestMethod, RequestUrl } from '../models';\n\ninterface Data extends RemoveBasketItem.Data, PositionData {}\n\nexport default async ({ detail: { lineNumber, placement } }: CustomEvent) => {\n const request = await fetch(\n RequestUrl.RemoveBasketItem,\n getHttpRequestSettings({ lineNumber, placement }, RequestMethod.Post),\n );\n\n return convertToCamelCase((await request.json()) as object);\n};\n","import type * as RemoveCustomerOrder from '@ori-events/remove-customer-order';\nimport * as RemoveCustomerOrderFailed from '@ori-events/remove-customer-order-failed';\nimport type { PositionData } from '@ori/analytics-data';\n\nimport type { RemoveCustomerOrderResponse } from '../guards/removeCustomerOrderResponse';\nimport {\n isRemoveCustomerOrderErrorResponse,\n isRemoveCustomerOrderSuccessResponse,\n} from '../guards/removeCustomerOrderResponse';\nimport { convertToCamelCase, getHttpRequestSettings } from '../helpers';\nimport { RequestUrl } from '../models';\n\ninterface Data extends RemoveCustomerOrder.Data, PositionData {}\n\nexport default async ({ detail: { endConsumerOrderId, placement } }: CustomEvent) => {\n const fetchUrl = `${RequestUrl.RemoveCustomerOrder}?endConsumerOrderId=${endConsumerOrderId}`;\n\n const request = await fetch(fetchUrl, getHttpRequestSettings({ placement }));\n\n const response = convertToCamelCase(\n (await request.json()) as object,\n );\n\n if (isRemoveCustomerOrderSuccessResponse(response)) {\n return response;\n }\n\n if (isRemoveCustomerOrderErrorResponse(response)) {\n const errorEvent = new CustomEvent(\n RemoveCustomerOrderFailed.Name,\n {\n detail: response,\n },\n );\n window.dispatchEvent(errorEvent);\n }\n\n return false;\n};\n","import type * as BasketUpdated from '@ori-events/basket-updated';\nimport type * as RemoveCustomerOrderFailed from '@ori-events/remove-customer-order-failed';\n\nexport type RemoveCustomerOrderResponse = BasketUpdated.Data | RemoveCustomerOrderFailed.Data;\n\nexport const isRemoveCustomerOrderSuccessResponse = (\n response: RemoveCustomerOrderResponse,\n): response is BasketUpdated.Data => Boolean((response as BasketUpdated.Data).shoppingBag);\n\nexport const isRemoveCustomerOrderErrorResponse = (\n response: RemoveCustomerOrderResponse,\n): response is RemoveCustomerOrderFailed.Data =>\n typeof (response as RemoveCustomerOrderFailed.Data).isSuccess === 'boolean' &&\n !(response as RemoveCustomerOrderFailed.Data).isSuccess;\n","import type * as RemoveVoucher from '@ori-events/remove-voucher';\nimport * as RemoveVoucherFailed from '@ori-events/remove-voucher-failed';\nimport type { PositionData } from '@ori/analytics-data';\n\nimport type { RemoveVoucherResponse } from '../guards/removeVoucherResponse';\nimport {\n isRemoveVoucherSuccessResponse,\n isRemoveVoucherErrorResponse,\n} from '../guards/removeVoucherResponse';\nimport { convertToCamelCase, getHttpRequestSettings } from '../helpers';\nimport { RequestUrl } from '../models';\n\ninterface Data extends RemoveVoucher.Data, PositionData {}\n\nconst dispatchRemoveVoucherFailed = (detail: RemoveVoucherFailed.Data) => {\n const event = new CustomEvent(RemoveVoucherFailed.Name, {\n detail,\n });\n window.dispatchEvent(event);\n};\n\nexport default async ({ detail: { placement, voucherCode } }: CustomEvent) => {\n const fetchUrl = `${RequestUrl.RemoveVoucher}?voucherCode=${voucherCode}`;\n const request = await fetch(fetchUrl, getHttpRequestSettings({ placement }));\n\n const response = convertToCamelCase((await request.json()) as object);\n\n if (isRemoveVoucherSuccessResponse(response)) {\n return response;\n }\n\n if (isRemoveVoucherErrorResponse(response)) {\n dispatchRemoveVoucherFailed(response);\n }\n\n return false;\n};\n","import type * as RemoveVoucherFailed from '@ori-events/add-voucher-failed';\nimport type * as BasketUpdated from '@ori-events/basket-updated';\n\nexport type RemoveVoucherResponse = BasketUpdated.Data | RemoveVoucherFailed.Data;\n\nexport const isRemoveVoucherSuccessResponse = (\n response: RemoveVoucherResponse,\n): response is BasketUpdated.Data => Boolean((response as BasketUpdated.Data).shoppingBag);\n\nexport const isRemoveVoucherErrorResponse = (\n response: RemoveVoucherResponse,\n): response is RemoveVoucherFailed.Data =>\n typeof (response as RemoveVoucherFailed.Data).isSuccess === 'boolean' &&\n !(response as RemoveVoucherFailed.Data).isSuccess;\n","import type * as ReplaceShoppingBagItem from '@ori-events/replace-shopping-bag-item';\nimport * as ReplaceShoppingBagItemFailed from '@ori-events/replace-shopping-bag-item-failed';\nimport type { PositionData } from '@ori/analytics-data';\n\nimport type { ReplaceShoppingBagItemResponse } from '../guards/replaceShoppingBagItemResponse';\nimport { isReplaceShoppingBagItemErrorResponse } from '../guards/replaceShoppingBagItemResponse';\nimport { convertToCamelCase, getHttpRequestSettings } from '../helpers';\nimport { RequestUrl } from '../models';\n\ninterface Data extends ReplaceShoppingBagItem.Data, PositionData {}\n\nexport default async ({ detail: { itemCode, lineNumber, placement } }: CustomEvent) => {\n const request = await fetch(\n `${RequestUrl.ReplaceShoppingBagItem}?lineNumber=${lineNumber}&itemCode=${itemCode}`,\n getHttpRequestSettings({ placement }),\n );\n\n const response = convertToCamelCase(\n (await request.json()) as object,\n );\n\n if (isReplaceShoppingBagItemErrorResponse(response)) {\n const errorEvent = new CustomEvent(\n ReplaceShoppingBagItemFailed.Name,\n {\n detail: response,\n },\n );\n window.dispatchEvent(errorEvent);\n\n return false;\n }\n\n return response;\n};\n","import type * as BasketUpdated from '@ori-events/basket-updated';\nimport type * as ReplaceShoppingBagItemFailed from '@ori-events/replace-shopping-bag-item-failed';\n\nexport type ReplaceShoppingBagItemResponse = BasketUpdated.Data | ReplaceShoppingBagItemFailed.Data;\n\nexport const isReplaceShoppingBagItemErrorResponse = (\n response: ReplaceShoppingBagItemResponse,\n): response is ReplaceShoppingBagItemFailed.Data => 'isSuccess' in response && !response.isSuccess;\n","import type * as BasketUpdated from '@ori-events/basket-updated';\n\nimport { convertToCamelCase, getHttpRequestSettings } from '../helpers';\nimport { RequestUrl } from '../models';\n\nexport default async () => {\n const response = await fetch(RequestUrl.ResetFreeShippingSelection, getHttpRequestSettings());\n\n return convertToCamelCase((await response.json()) as object);\n};\n","import type * as UpdateBasketItem from '@ori-events/update-basket-item';\nimport type {\n Data as ErrorData,\n UpdateBasketItemResponse,\n} from '@ori-events/update-basket-item-failed';\nimport {\n isUpdateBasketItemErrorResponse,\n Name as ErrorEventName,\n} from '@ori-events/update-basket-item-failed';\nimport type { PositionData } from '@ori/analytics-data';\n\nimport { convertToCamelCase, getHttpRequestSettings } from '../helpers';\nimport { RequestUrl } from '../models';\n\ninterface Data extends UpdateBasketItem.Data, PositionData {}\n\nexport default async ({ detail: { lineNumber, placement, quantity } }: CustomEvent) => {\n const request = await fetch(\n `${RequestUrl.UpdateBasketItem}?lineNumber=${lineNumber}&quantity=${quantity}`,\n getHttpRequestSettings({ placement }),\n );\n\n const response = convertToCamelCase((await request.json()) as object);\n\n if (isUpdateBasketItemErrorResponse(response)) {\n const errorEvent = new CustomEvent(ErrorEventName, {\n detail: response,\n });\n window.dispatchEvent(errorEvent);\n\n return false;\n }\n\n return response;\n};\n","import type * as UpdateCustomerOrderItem from '@ori-events/update-customer-order-item';\nimport * as UpdateCustomerOrderItemFailed from '@ori-events/update-customer-order-item-failed';\nimport type { PositionData } from '@ori/analytics-data';\n\nimport type { UpdateCustomerOrderItemResponse } from '../guards/updateCustomerOrderItemResponse';\nimport {\n isUpdateCustomerOrderItemErrorResponse,\n isUpdateCustomerOrderItemSuccessResponse,\n} from '../guards/updateCustomerOrderItemResponse';\nimport { convertToCamelCase, getHttpRequestSettings } from '../helpers';\nimport { RequestUrl } from '../models';\n\ninterface Data extends UpdateCustomerOrderItem.Data, PositionData {}\n\nexport default async ({\n detail: { endConsumerOrderId, itemCode, placement, requestedQuantity },\n}: CustomEvent) => {\n const fetchUrl =\n `${RequestUrl.UpdateCustomerOrderItem}` +\n `?endConsumerOrderId=${endConsumerOrderId}` +\n `&itemCode=${itemCode}` +\n `&requestedQuantity=${requestedQuantity}`;\n\n const request = await fetch(fetchUrl, getHttpRequestSettings({ placement }));\n\n const response = convertToCamelCase(\n (await request.json()) as object,\n );\n\n if (isUpdateCustomerOrderItemSuccessResponse(response)) {\n return response;\n }\n\n if (isUpdateCustomerOrderItemErrorResponse(response)) {\n const errorEvent = new CustomEvent(\n UpdateCustomerOrderItemFailed.Name,\n {\n detail: response,\n },\n );\n window.dispatchEvent(errorEvent);\n }\n\n return false;\n};\n","import type * as BasketUpdated from '@ori-events/basket-updated';\nimport type * as UpdateCustomerOrderItemFailed from '@ori-events/update-customer-order-item-failed';\n\nexport type UpdateCustomerOrderItemResponse =\n | BasketUpdated.Data\n | UpdateCustomerOrderItemFailed.Data;\n\nexport const isUpdateCustomerOrderItemSuccessResponse = (\n response: UpdateCustomerOrderItemResponse,\n): response is BasketUpdated.Data => Boolean((response as BasketUpdated.Data).shoppingBag);\n\nexport const isUpdateCustomerOrderItemErrorResponse = (\n response: UpdateCustomerOrderItemResponse,\n): response is UpdateCustomerOrderItemFailed.Data =>\n typeof (response as UpdateCustomerOrderItemFailed.Data).isSuccess === 'boolean' &&\n !(response as UpdateCustomerOrderItemFailed.Data).isSuccess;\n","import type * as UpdateDelivery from '@ori-events/update-delivery';\nimport type { Data as ErrorData, UpdateDeliveryResponse } from '@ori-events/update-delivery-failed';\nimport {\n isUpdateDeliveryErrorResponse,\n Name as ErrorEventName,\n} from '@ori-events/update-delivery-failed';\n\nimport { convertToCamelCase } from '../helpers';\nimport { RequestUrl } from '../models';\nimport { putRequestOptions } from '~/constants';\n\ntype Data = UpdateDelivery.Data;\n\nexport default async ({\n detail: { deliveryAddressId, deliveryChannelId, registrationId },\n}: CustomEvent) => {\n // if needed, start with delivery channel ID update\n if (typeof deliveryChannelId !== 'undefined') {\n const channelRequestOptions = {\n ...putRequestOptions,\n body: JSON.stringify({ deliveryChannelId }),\n };\n const requestUpdateDeliveryChannel = await fetch(\n RequestUrl.UpdateDeliveryChannel,\n channelRequestOptions,\n );\n\n const channelResponse = convertToCamelCase(\n (await requestUpdateDeliveryChannel.json()) as object,\n );\n\n if (isUpdateDeliveryErrorResponse(channelResponse)) {\n const errorEvent = new CustomEvent(ErrorEventName, {\n detail: channelResponse,\n });\n window.dispatchEvent(errorEvent);\n\n return false;\n }\n }\n\n // delivery address ID update\n const addressParams: {\n addressId: number;\n registrationId?: string;\n } = {\n addressId: deliveryAddressId,\n };\n if (registrationId) {\n addressParams.registrationId = registrationId;\n }\n const addressRequestOptions = {\n ...putRequestOptions,\n body: JSON.stringify(addressParams),\n };\n const requestUpdateDeliveryAddress = await fetch(\n RequestUrl.UpdateDeliveryAddress,\n addressRequestOptions,\n );\n\n const addressResponse = convertToCamelCase(\n (await requestUpdateDeliveryAddress.json()) as object,\n );\n\n if (isUpdateDeliveryErrorResponse(addressResponse)) {\n const errorEvent = new CustomEvent(ErrorEventName, {\n detail: addressResponse,\n });\n window.dispatchEvent(errorEvent);\n\n return false;\n }\n\n return addressResponse;\n};\n","import type * as UpdateDeliveryChannel from '@ori-events/update-delivery-channel';\nimport type {\n Data as ErrorData,\n UpdateDeliveryChannelResponse,\n} from '@ori-events/update-delivery-channel-failed';\nimport {\n isUpdateDeliveryChannelErrorResponse,\n Name as ErrorEventName,\n} from '@ori-events/update-delivery-channel-failed';\n\nimport { convertToCamelCase } from '../helpers';\nimport { RequestUrl } from '../models';\nimport { putRequestOptions } from '~/constants';\n\ntype Data = UpdateDeliveryChannel.Data;\n\nexport default async ({ detail: { deliveryChannelId } }: CustomEvent) => {\n const requestOptions = {\n ...putRequestOptions,\n body: JSON.stringify({ deliveryChannelId }),\n };\n const request = await fetch(RequestUrl.UpdateDeliveryChannel, requestOptions);\n\n const response = convertToCamelCase(\n (await request.json()) as object,\n );\n\n if (isUpdateDeliveryChannelErrorResponse(response)) {\n const errorEvent = new CustomEvent(ErrorEventName, {\n detail: response,\n });\n window.dispatchEvent(errorEvent);\n\n return false;\n }\n\n return response;\n};\n","import type * as UpdateDonation from '@ori-events/update-donation';\nimport type { Data as ErrorData, UpdateDonationResponse } from '@ori-events/update-donation-failed';\nimport {\n isUpdateDonationFailedResponse,\n Name as ErrorEventName,\n} from '@ori-events/update-donation-failed';\nimport type { PositionData } from '@ori/analytics-data';\n\nimport { convertToCamelCase, getHttpRequestSettings } from '../helpers';\nimport { RequestMethod, RequestUrl } from '../models';\n\ninterface Data extends UpdateDonation.Data, PositionData {}\n\nexport default async function updateDonationHandler({\n detail: { choiceId, checked },\n}: CustomEvent) {\n const request = await fetch(\n RequestUrl.UpdateDonation,\n getHttpRequestSettings({ choiceId, checked }, RequestMethod.Post),\n );\n\n const response = convertToCamelCase((await request.json()) as object);\n\n if (isUpdateDonationFailedResponse(response)) {\n const event = new CustomEvent(ErrorEventName, {\n detail: response,\n });\n window.dispatchEvent(event);\n }\n\n return response;\n}\n","import type * as BasketUpdated from '@ori-events/basket-updated';\nimport type * as UpdateOfferItems from '@ori-events/update-offer-items';\nimport type { PositionData } from '@ori/analytics-data';\n\nimport { convertToCamelCase, getHttpRequestSettings } from '../helpers';\nimport { RequestMethod, RequestUrl } from '../models';\n\ninterface Data extends UpdateOfferItems.Data, PositionData {}\n\nexport default async ({ detail: { choiceId, items, placement } }: CustomEvent) => {\n const request = await fetch(\n RequestUrl.UpdateOfferItems,\n getHttpRequestSettings({ choiceId, items, placement }, RequestMethod.Post),\n );\n\n return convertToCamelCase((await request.json()) as object);\n};\n","import type * as BasketUpdated from '@ori-events/basket-updated';\nimport type * as UpdateOfferItem from '@ori-events/update-offer-item';\nimport type { PositionData } from '@ori/analytics-data';\n\nimport { convertToCamelCase, getHttpRequestSettings } from '../helpers';\nimport { RequestMethod, RequestUrl } from '../models';\n\ninterface Data extends UpdateOfferItem.Data, PositionData {}\n\nexport default async ({\n detail: { choiceId, itemCode, placement, quantity },\n}: CustomEvent) => {\n const request = await fetch(\n RequestUrl.UpdateOfferItem,\n getHttpRequestSettings({ choiceId, itemCode, placement, quantity }, RequestMethod.Post),\n );\n\n return convertToCamelCase((await request.json()) as object);\n};\n","import type * as UpdatePaymentProvider from '@ori-events/update-payment-provider';\nimport type {\n Data as ErrorData,\n UpdatePaymentProviderResponse,\n} from '@ori-events/update-payment-provider-failed';\nimport {\n isUpdatePaymentProviderFailedResponse,\n Name as ErrorEventName,\n} from '@ori-events/update-payment-provider-failed';\nimport type { PositionData } from '@ori/analytics-data';\n\nimport { convertToCamelCase, getHttpRequestSettings } from '../helpers';\nimport { RequestUrl } from '../models';\n\ninterface Data extends UpdatePaymentProvider.Data, PositionData {}\n\nexport default async ({ detail: { paymentProviderId, placement } }: CustomEvent) => {\n const request = await fetch(\n `${RequestUrl.UpdatePaymentProvider}?paymentProviderId=${paymentProviderId}`,\n getHttpRequestSettings({ placement }),\n );\n\n const response = convertToCamelCase(\n (await request.json()) as object,\n );\n\n if (isUpdatePaymentProviderFailedResponse(response)) {\n const errorEvent = new CustomEvent(ErrorEventName, {\n detail: response,\n });\n window.dispatchEvent(errorEvent);\n\n return false;\n }\n\n return response;\n};\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import type * as BasketUpdated from '@ori-events/basket-updated';\nimport * as ShoppingContextLoaded from '@ori-events/shopping-context-loaded';\n\nimport { convertToCamelCase, getHttpRequestSettings } from '../helpers';\nimport { RequestMethod, RequestUrl } from '../models';\n\nexport default async () => {\n const request = await fetch(\n RequestUrl.GetShoppingContext,\n getHttpRequestSettings(undefined, RequestMethod.Post),\n );\n\n const shoppingContext = convertToCamelCase((await request.json()) as object);\n\n const event = new CustomEvent(ShoppingContextLoaded.Name, {\n detail: shoppingContext,\n });\n window.dispatchEvent(event);\n\n return shoppingContext;\n};\n","import BasketProvider from './BasketProvider';\n\nvoid new BasketProvider();\n"],"names":["symbolTag","reAsciiWord","reLatin","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsBreakRange","rsMathOpRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsLowerMisc","rsUpperMisc","rsOptLowerContr","rsOptUpperContr","reOptMod","rsOptVar","rsSeq","join","rsEmoji","rsSymbol","reApos","RegExp","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","freeGlobal","g","Object","freeSelf","self","root","Function","object","deburrLetter","key","undefined","hasUnicode","string","test","stringToArray","match","unicodeToArray","split","asciiToArray","objectToString","prototype","toString","Symbol","symbolProto","symbolToString","baseToString","value","isObjectLike","call","isSymbol","result","castSlice","array","start","end","length","index","Array","baseSlice","callback","camelCase","word","toLowerCase","upperFirst","iteratee","accumulator","initAccum","arrayReduce","pattern","guard","hasUnicodeWord","unicodeWords","asciiWords","words","replace","deburr","methodName","strSymbols","chr","charAt","trailing","slice","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","globalThis","this","e","window","obj","prop","hasOwnProperty","_arrayLikeToArray","arr","len","i","arr2","_slicedToArray","isArray","_i","iterator","_s","_e","_arr","_n","_d","next","done","push","err","minLen","constructor","name","from","TypeError","_defineProperties","target","props","descriptor","configurable","writable","_defineProperty","Method","Name","LoyaltyDialogResults","Results","CLOSE","BUY_FOR_MONEY","BUY_FOR_POINTS","BasketOfferTypes","ShoppingNotificationType","ContentTypes","Header","RequestMethod","RequestUrl","ShoppingContextLoadedEvent","response","isSuccess","_typeof","convertToCamelCase","map","fromEntries","entries","_objectWithoutProperties","source","excluded","sourceKeys","keys","indexOf","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","getHttpRequestSettings","data","body","method","Get","headers","ContentType","Json","placement","finalData","Placement","bodyValue","JSON","stringify","credentials","Post","Boolean","addBasketOffer","async","url","params","request","fetch","json","isAddBasketOfferErrorResponse","event","CustomEvent","AddBasketOfferFailed","detail","dispatchEvent","LOG_KEY","getTime","date","Date","getHours","getMinutes","getSeconds","getMilliseconds","isLoggerOn","localStorage","parse","getItem","log","time","args","console","logReceivedEvent","type","pagePathPatterns","dispatchBasketUpdatedEvent","eventType","BasketUpdated","contextKey","scheduledCleanupKey","storage","isStorageAvailable","getUserCheck","cookieName","b","charCodeAt","adler32","document","cookie","trim","parseValue","serializedData","parsedValue","error","timestamp","savedTimestamp","userCheck","now","removeItem","isUpdateBasketItemErrorResponse","buyingMethod","itemCode","quantity","loyaltyPoints","isAddToBasketLoyaltyResponseResponse","ShowLoyaltyDialog","shoppingBag","isAddToBasketSuccessResponse","lastAddedItem","isAddToBasketErrorResponse","AddToBasketFailed","putRequestOptions","isUpdateDeliveryErrorResponse","setCachedContext","setItem","contextUpdatesMap","AcceptNotification","reasonId","isAcceptNotificationErrorResponse","errorEvent","ErrorEventName","AddBackorderDemand","lineNumber","requestItemUpdate","UpdateBasketItem","AddBasketOffer","items","isAddBasketOfferPurchaseEvent","choiceId","offerId","currentPlacement","PurchaseBasketOffer","AddCatalogueOffer","AddCatalogueOfferFailed","AddCustomerOrder","orderIds","URL","location","href","forEach","id","searchParams","append","String","isCustomerOrderSuccessResponse","lastAddedCustomerOrderIds","isCustomerOrderErrorResponse","AddCustomerOrderFailed","AddFreeShippingOffer","AddFreeShippingOfferFailed","AddToBasket","originalItemCode","replacementType","addToBasketMethod","AddToBasketForMoney","AddToBasketForPointsRewardShop","AddToBasketCheckLoyalty","getBuyingURLandMethod","addToBasket","AddVoucher","voucherCode","fetchUrl","isAddVoucherSuccessResponse","isAddVoucherErrorResponse","AddVoucherFailed","CancelBackorderDemand","CancelSubscription","consumerId","packageId","subscriptionId","CancelSubscriptionFailed","ClearBasket","DelaySubscription","cycle","step","isDelaySubscriptionSuccessResponse","isDelaySubscriptionErrorResponse","DelaySubscriptionFailed","LoyaltyDialogResult","catalogueItemId","AddToBasketForPoints","RemoveBasketItem","RemoveCustomerOrder","endConsumerOrderId","isRemoveCustomerOrderSuccessResponse","isRemoveCustomerOrderErrorResponse","RemoveCustomerOrderFailed","RemoveVoucher","isRemoveVoucherSuccessResponse","isRemoveVoucherErrorResponse","RemoveVoucherFailed","ReplaceShoppingBagItem","isReplaceShoppingBagItemErrorResponse","ReplaceShoppingBagItemFailed","ResetShippingSelection","ResetFreeShippingSelection","UpdateCustomerOrderItem","requestedQuantity","isUpdateCustomerOrderItemSuccessResponse","isUpdateCustomerOrderItemErrorResponse","UpdateCustomerOrderItemFailed","UpdateDelivery","deliveryAddressId","deliveryChannelId","registrationId","channelRequestOptions","requestUpdateDeliveryChannel","UpdateDeliveryChannel","channelResponse","addressParams","addressId","addressRequestOptions","requestUpdateDeliveryAddress","UpdateDeliveryAddress","addressResponse","requestOptions","isUpdateDeliveryChannelErrorResponse","UpdateDonation","checked","isUpdateDonationFailedResponse","UpdateOfferItems","UpdateOfferItem","UpdatePaymentProvider","paymentProviderId","isUpdatePaymentProviderFailedResponse","BasketProvider","isCleanupPage","instance","Constructor","parseConfiguration","isBrowserStorageUsed","some","item","pathname","includes","isScheduled","isScheduledCacheCleanup","clearContext","getStoredContext","initEventListeners","protoProps","staticProps","isBrowserTabsSynchronizationUsed","shoppingContext","eventListeners","removeEventListeners","eventName","updateHandler","updateContext","RequestShoppingContext","isRequestingShoppingContext","newData","GetShoppingContext","ShoppingContextLoaded","requestShoppingContextHandler","PlaceOrderRequested","clearContextOnEvent","RequestClearShoppingCache","eventListener","storageArea","newValue","action","addEventListener","removeEventListener","configElement","getElementById","CONFIG_ELEMENT_ID","rawData","innerHTML","useBrowserTabsSynchronization","useLocalStorage","eventTypeToBeTriggered","shouldStoreData"],"sourceRoot":""}