{"version":3,"sources":["webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/minicart/minicart.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/minicart/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/is-numeric.js"],"names":["JS_HOOK_QUANTITY","JS_HOOK_QUANTITY_VALUE","JS_HOOK_LINK","JS_HOOK_TITLE","CLASS_HIDE_QUANTITY","Minicart","constructor","element","ui","quantity","querySelector","quantityValue","link","title","titleShort","dataset","titleLongSingle","titleLongPlural","bindEvents","updateMiniCartQuantity","data","pendingTotalItemsInCart","quantityTotal","numItems","isNumeric","newLongTitle","getLongTitle","newShortTitle","replace","setAttribute","innerText","classList","remove","add","amount","numberedTitle","Events","$on","e","n","Number","isNaN","parseFloat","isFinite"],"mappings":"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","file":"js/Minicart.js","sourcesContent":["import Events from '@utilities/events'\nimport isNumeric from '@utilities/is-numeric'\n\nconst JS_HOOK_QUANTITY = '[js-hook-minicart-quantity]'\nconst JS_HOOK_QUANTITY_VALUE = '[js-hook-minicart-quantity-value]'\nconst JS_HOOK_LINK = '[js-hook-minicart-link]'\nconst JS_HOOK_TITLE = '[js-hook-minicart-title]'\nconst CLASS_HIDE_QUANTITY = 'button__quantity--hidden'\n\nclass Minicart {\n constructor(element) {\n this.element = element\n this.ui = {\n quantity: this.element.querySelector(JS_HOOK_QUANTITY),\n quantityValue: this.element.querySelector(JS_HOOK_QUANTITY_VALUE),\n link: this.element.querySelector(JS_HOOK_LINK),\n title: this.element.querySelector(JS_HOOK_TITLE),\n }\n\n if (this.ui.link === 'undefined') return\n\n // COMMENT: Unformatted texts from \".properties\", need {0} to replace with cart items count\n this.titleShort = this.ui.link?.dataset?.titleShort\n this.titleLongSingle = this.ui.link?.dataset?.titleLongSingle\n this.titleLongPlural = this.ui.link?.dataset?.titleLongPlural\n\n this.bindEvents()\n }\n\n /**\n * Update quantity value in minicart\n * @param data {object} - data returned from API endpoint controlling quantity in cart.\n */\n updateMiniCartQuantity(data) {\n if (!data || this.ui.link === 'undefined') return\n\n const pendingTotalItemsInCart = data.quantityTotal || data.numItems || 0\n\n if (data && isNumeric(pendingTotalItemsInCart)) {\n const newLongTitle = this.getLongTitle(pendingTotalItemsInCart)\n const newShortTitle = this.titleShort.replace('{0}', pendingTotalItemsInCart)\n\n this.ui.link.setAttribute('title', newLongTitle)\n this.ui.link.setAttribute('aria-label', newLongTitle)\n this.ui.title.innerText = newShortTitle\n this.ui.quantityValue.innerText = pendingTotalItemsInCart\n\n if (pendingTotalItemsInCart > 0) {\n this.ui.quantity.classList.remove(CLASS_HIDE_QUANTITY)\n } else {\n this.ui.quantity.classList.add(CLASS_HIDE_QUANTITY)\n }\n }\n }\n\n /**\n * Get correct title for single or plural items\n * @param amount\n * @returns {string}\n */\n getLongTitle(amount) {\n const title = amount === 1 ? this.titleLongSingle : this.titleLongPlural\n const numberedTitle = title.replace('{0}', amount)\n return `${numberedTitle}`\n }\n\n /**\n * Bind all general events\n */\n bindEvents() {\n Events.$on('minicart::update', (e, data) => this.updateMiniCartQuantity(data))\n }\n}\n\nexport default Minicart\n\n","import Minicart from './minicart';\n\nexport default Minicart;\n","const isNumeric = function (n) {\n return !Number.isNaN(parseFloat(n)) && Number.isFinite(n)\n};\n\nexport default isNumeric;\n"],"sourceRoot":""}