{"version":3,"file":"1bf33fb9.js","sources":["../../../src/util/format-money.js","../../../src/lib/dynamic-yield-tracking.js"],"sourcesContent":["/**\n * format money\n * edited version of the following script:\n * @see https://gist.github.com/stewartknapman/8d8733ea58d2314c373e94114472d44c\n * @param {Number|String} cents e.g. \"1200\"\n * @param {String} format e.g. \"amount_with_currency\"\n * @param {String} currency e.g. \"$\"\n * @return {String}\n */\nfunction formatMoney(cents, format, currency = '$') {\n if (typeof cents == 'string') {\n cents = cents.replace('.', '');\n }\n var value = '';\n\n function defaultOption(opt, def) {\n return typeof opt == 'undefined' ? def : opt;\n }\n\n function formatWithDelimiters(number, precision, thousands, decimal) {\n precision = defaultOption(precision, 2);\n thousands = defaultOption(thousands, ',');\n decimal = defaultOption(decimal, '.');\n\n if (isNaN(number) || number == null) {\n return 0;\n }\n\n number = (number / 100.0).toFixed(precision);\n\n var parts = number.split('.'),\n dollars = parts[0].replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, '$1' + thousands),\n cents = parts[1] ? decimal + parts[1] : '';\n\n return dollars + cents;\n }\n\n switch (format) {\n case 'amount':\n value = formatWithDelimiters(cents, 2);\n break;\n case 'amount_with_currency':\n value = currency + formatWithDelimiters(cents, 2);\n break;\n case 'amount_with_currency_without_trailing_zeros':\n value = currency + formatWithDelimiters(cents, 2);\n if (value.indexOf('.00') !== -1) {\n value = value.replace('.00', '');\n }\n break;\n case 'amount_no_decimals':\n value = formatWithDelimiters(cents, 0);\n break;\n case 'amount_with_comma_separator':\n value = formatWithDelimiters(cents, 2, '.', ',');\n break;\n case 'amount_no_decimals_with_comma_separator':\n value = formatWithDelimiters(cents, 0, '.', ',');\n break;\n }\n\n return value;\n}\n\nexport default formatMoney;\n","/**\n * Dynamic Yield Event Tracking\n * https://support.dynamicyield.com/hc/en-us/articles/360023172893-Events-for-Web\n */\nimport formatMoney from 'Js/util/format-money';\nimport capitalize from 'Js/util/capitalize';\n\nconst dynamicYield = {\n addItem: (addedItem, bagItems, currencyCode) => {\n if (!addedItem) return;\n console.log('DY addItem');\n const {price, id: sku, quantity} = addedItem;\n const cart = bagItems.map((item) => ({\n productId: item.id,\n quantity: item.quantity,\n itemPrice: formatMoney(item.price, 'amount'),\n }));\n const currency = currencyCode || 'USD';\n if (typeof DY === 'undefined') return;\n\n DY.API('event', {\n name: 'Add to Cart',\n properties: {\n dyType: 'add-to-cart-v1',\n value: formatMoney(price * 100, 'amount'),\n currency,\n productId: sku,\n quantity,\n cart,\n },\n });\n },\n\n removeItem: (removedItem, bagItems, currencyCode) => {\n console.log('DY removeItem');\n const {price, id: sku, quantity} = removedItem;\n const currency = currencyCode || 'USD';\n const cart = bagItems.map((item) => ({\n productId: item.id,\n quantity: item.quantity,\n itemPrice: formatMoney(item.price, 'amount'),\n }));\n if (typeof DY === 'undefined') return;\n\n DY.API('event', {\n name: 'Remove from Cart',\n properties: {\n dyType: 'remove-from-cart-v1',\n value: formatMoney(price, 'amount'),\n currency,\n productId: sku,\n quantity,\n cart,\n },\n });\n },\n\n updateProductSku: (sku) => {\n if (typeof DY === 'undefined') return;\n DY.recommendationContext = {type: 'PRODUCT', data: [`${sku}`]};\n },\n\n searchToggle: (isOpen) => {\n if (typeof DY === 'undefined') return;\n const dyContext = DY.recommendationContext;\n\n if (isOpen) {\n if (dyContext && dyContext.type !== 'OTHER') {\n sessionStorage.setItem('dy-context', JSON.stringify(dyContext));\n }\n DY.recommendationContext = {type: 'OTHER'};\n } else if (sessionStorage.getItem('dy-context')) {\n DY.recommendationContext = JSON.parse(\n sessionStorage.getItem('dy-context'),\n );\n sessionStorage.removeItem('dy-context');\n }\n },\n\n keywordSearch: (string) => {\n if (typeof DY === 'undefined') return;\n DY.API('event', {\n name: 'Keyword Search',\n properties: {\n dyType: 'keyword-search-v1',\n keywords: `${string}`,\n },\n });\n },\n\n homepage: (languageCode) => {\n // wait until GlobalE loaded\n const observer = new MutationObserver(() => {\n const lang = languageCode || 'en-US';\n if (typeof DY === 'undefined') return;\n DY.recommendationContext = {type: 'HOMEPAGE', lng: lang};\n observer.disconnect();\n });\n observer.observe(document.body, {childList: true, subtree: true});\n },\n\n login: (email) => {\n DY.API('event', {\n name: 'Login',\n properties: {\n dyType: 'login-v1',\n hashedEmail: DYO.dyhash.sha256(email.toLowerCase()),\n },\n });\n },\n\n signUp: (email) => {\n // Set session storage for register\n sessionStorage.setItem('dyregister', 'true');\n DY.API('event', {\n name: 'Signup',\n properties: {\n dyType: 'signup-v1',\n hashedEmail: DYO.dyhash.sha256(email.toLowerCase()),\n },\n });\n },\n\n filterItems: (selectedFilters) => {\n if (!selectedFilters || !selectedFilters.length) return;\n selectedFilters.forEach((selectedFilter, index) => {\n // Remove the text \"parent \" from the filter name\n const filterName = selectedFilter.parent.replace('parent ', '');\n\n DY.API('event', {\n name: 'Filter Items',\n properties: {\n dyType: 'filter-items-v1',\n filterType: capitalize(filterName), // Name of filter (Color, Size, etc)\n filterNumericValue: index,\n },\n });\n });\n },\n\n search: (query) => {\n if (!query) return;\n DY.API('event', {\n name: 'Keyword Search',\n properties: {\n dyType: 'keyword-search-v1',\n keywords: query,\n },\n });\n },\n\n swatchClick: (color) => {\n if (!color) return;\n DY.API('event', {\n name: 'Change Attribute',\n properties: {\n dyType: 'change-attr-v1',\n attributeType: 'Color',\n attributeValue: color,\n },\n });\n },\n\n newsletter: (email) => {\n if (!email) return;\n DY.API('event', {\n name: 'Newsletter Subscription',\n properties: {\n dyType: 'newsletter-subscription-v1',\n hashedEmail: DYO.dyhash.sha256(email.toLowerCase()),\n },\n });\n },\n\n waitlist: (email) => {\n if (!email) return;\n DY.API('event', {\n name: 'Waitlist PDP',\n properties: {\n dyType: 'signup-v1',\n hashedEmail: DYO.dyhash.sha256(email.toLowerCase()),\n },\n });\n },\n};\n\nexport default dynamicYield;\n"],"names":["formatMoney","cents","format","currency","value","defaultOption","opt","def","formatWithDelimiters","number","precision","thousands","decimal","parts","dollars","dynamicYield","addedItem","bagItems","currencyCode","price","sku","quantity","cart","item","removedItem","isOpen","dyContext","string","languageCode","observer","lang","email","selectedFilters","selectedFilter","index","filterName","capitalize","query","color","dynamicYield$1"],"mappings":"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"}