{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///../link_bambuser/cartridges/int_bambuser/cartridge/client/default/js/bambuser/client.js","webpack:///../link_bambuser/cartridges/int_bambuser/cartridge/client/default/js/bambuser/modules/bambuser.js"],"names":[],"mappings":"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","file":"default/js/bambuser/client.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"../link_bambuser/cartridges/int_bambuser/cartridge/client/default/js/bambuser/client.js\");\n","const bambuserHeroWrapper = document.querySelectorAll('.bambuser-hero-trigger');\nconst bambuser = require('./modules/bambuser');\n\nif (bambuserHeroWrapper.length) {\n /**\n * example bambuser frontend module integration\n */\n document.querySelectorAll('.js_bambuser-stream-trigger:not(.js_processed)').forEach((el) => {\n const { streamId } = el.dataset;\n if (streamId) {\n bambuser.initStream(streamId, el);\n el.classList.add('js_processed');\n }\n });\n}\n\n// initializing the miniplayer skip pages\nbambuser.miniplayerSkipPages();\n// initializing the shopping floating action button widget\nbambuser.initLiveShoppingWidget();\n","/**\n * bambuser live shopping frontend module\n */\n\n\n// Util functions ---------------------------------------------------------\n/**\n * use this to reload Iframe Page that is created by the stream\n */\nfunction reloadIframePage() {\n $('iframe').each((i, item) => {\n const $pageFrame = $(item);\n const parentId = $($pageFrame.parent()).attr('id');\n const currentPage = window.location.href;\n\n if (parentId && parentId.indexOf('livecommerce-surf') > -1) {\n $pageFrame.attr('src', currentPage);\n }\n });\n}\n/**\n * triggers the SFRA frontend minicart update\n * this will likely need to be customized for each shop frontend client\n * @param {number} cartState.quantityTotal total cart quantity\n * @param {string} cartState.minicartCountOfItems string description of cart quantity\n */\nfunction updateShopMiniCart({ quantityTotal, minicartCountOfItems }) {\n window.$('.minicart').trigger('count:update', { quantityTotal, minicartCountOfItems });\n document.dispatchEvent(new Event('cart:update', { bubbles: true }));\n reloadIframePage();\n}\n\n/**\n * updates bambuser player with SFRA product data\n * @param {Object} productResponse product data retrieved from sfra\n * @param {Object} player bambuser player instance\n * @param {Object} config module config object\n * @returns {void}\n*/\nfunction updateBambuserProduct(productResponse, player, config) {\n if (productResponse) {\n player.updateProduct(productResponse.bambuserPID, factory => factory\n .currency(config.currency)\n .locale(config.locale)\n .product(p => p\n .brandName(productResponse.brand)\n .defaultVariationIndex(0)\n .description(productResponse.description)\n .name(productResponse.name)\n .sku(productResponse.id)\n .variations(v => productResponse.variations.map(variation =>\n v()\n .attributes(a => a\n .colorName(variation.colorName))\n .imageUrls(variation.imageURLs)\n .name(variation.name)\n .sku(variation.sku)\n .sizes(s => variation.sizes.map(size =>\n s()\n .name(size.name)\n .inStock(size.inStock)\n .price(pr => pr\n .currency(size.price.currency)\n .current(size.price.current)\n )\n .sku(size.sku)\n )\n )\n )\n )\n )\n );\n }\n}\n// -------------------------------------------------------------------------\n\n\n/**\n * initialize bambuser frontend integration\n */\nfunction initIntegration() {\n // get config\n let config;\n const basketPLIs = {};\n\n try {\n const configEl = document.querySelector('.js_bambuser-config');\n config = JSON.parse(configEl.dataset.config);\n } catch (e) {\n window.console.error('Could not load bambuser player config', e);\n return;\n }\n\n if (!config.enabled) {\n window.console.debug('Bambuser integration disabled');\n return;\n }\n // configure player and define handlers\n window.onBambuserLiveShoppingReady = function (player) {\n // basic config\n let dismissMiniplayer;\n let productMiniplayer;\n let checkoutMiniplayer;\n const buttonsDisplay = {};\n const NO_DISPLAY = 'no_display';\n\n switch (config.dismissMiniplayer) {\n case 'player.BUTTON.CLOSE':\n dismissMiniplayer = player.BUTTON.CLOSE;\n break;\n case 'player.BUTTON.MINIMIZE':\n dismissMiniplayer = player.BUTTON.MINIMIZE;\n break;\n case 'player.BUTTON.NONE':\n dismissMiniplayer = player.BUTTON.NONE;\n break;\n default: break;\n }\n\n if (config.dismissMiniplayer !== NO_DISPLAY) {\n buttonsDisplay.dismiss = dismissMiniplayer;\n }\n\n switch (config.productMiniplayer) {\n case 'player.BUTTON.LINK':\n productMiniplayer = player.BUTTON.LINK;\n break;\n case 'player.BUTTON.MINIMIZE':\n productMiniplayer = player.BUTTON.MINIMIZE;\n break;\n case 'player.BUTTON.NONE':\n productMiniplayer = player.BUTTON.NONE;\n break;\n case 'player.BUTTON.AUTO':\n productMiniplayer = player.BUTTON.AUTO;\n break;\n default: break;\n }\n\n if (config.productMiniplayer !== NO_DISPLAY) {\n buttonsDisplay.product = productMiniplayer;\n }\n\n switch (config.checkoutMiniplayer) {\n case 'player.BUTTON.LINK':\n checkoutMiniplayer = player.BUTTON.LINK;\n break;\n case 'player.BUTTON.MINIMIZE':\n checkoutMiniplayer = player.BUTTON.MINIMIZE;\n break;\n default: break;\n }\n\n if (config.checkoutMiniplayer !== NO_DISPLAY) {\n buttonsDisplay.checkout = checkoutMiniplayer;\n }\n\n player.configure({\n locale: config.locale,\n currency: config.currency,\n buttons: buttonsDisplay,\n\n });\n\n // handle add to cart\n player.on(player.EVENT.ADD_TO_CART, (addedItem, callback) => {\n const payLoad = new FormData();\n payLoad.append('pid', addedItem.sku);\n payLoad.append('quantity', addedItem.quantity || 1);\n window.fetch(\n config.urls.addToCart,\n {\n method: 'POST',\n body: payLoad,\n })\n .then((response) => response.json())\n .then((productJson) => {\n basketPLIs[addedItem.sku] = productJson.pliUUID;\n updateShopMiniCart(productJson);\n callback(true);\n });\n });\n\n // handle checkout (redirect)\n player.on(player.EVENT.CHECKOUT, () => {\n player.showCheckout(window.location.origin + config.urls.checkout);\n });\n\n // handle PROVIDE_PRODUCT_DATA\n player.on(player.EVENT.PROVIDE_PRODUCT_DATA, (event) => {\n if (config.cartIntegration) {\n Array.prototype.forEach.call(event.products, (prod) => {\n // construct query url\n const url = new URL(window.location.href);\n url.pathname = config.urls.productData;\n url.searchParams.append('id', prod.id || '');\n url.searchParams.append('ref', prod.ref || '');\n\n // fetch and process product data\n window.fetch(url, { method: 'GET' })\n .then((response) => response.json())\n .then((responseObj) => updateBambuserProduct(responseObj.product, player, config));\n });\n }\n });\n\n // Optional: handle CLOSE\n player.on(player.EVENT.CLOSE, (event) => { // eslint-disable-line no-unused-vars\n // do something\n });\n\n // handle SYNC_CART_STATE\n player.on(player.EVENT.SYNC_CART_STATE, (event) => { // eslint-disable-line no-unused-vars\n // Currently, update cart does not support anything more than emptying the cart.\n // The Bambuser team is working on providing a way to fully control the in-player cart.\n // For a consistent UX, this event should sync the player minicart with the shop cart\n // on launch\n });\n\n // handle UPDATE_ITEM_IN_CART\n // Note: due to the possibility of the player cart being out of sync with the shop, some unexpected behavior\n // is possible (see SYNC_CART_STATE handler)\n player.on(player.EVENT.UPDATE_ITEM_IN_CART, (updatedItem, callback) => {\n const pliUUID = basketPLIs[updatedItem.sku];\n\n if (pliUUID) {\n const url = new URL(\n updatedItem.quantity > 0 ? config.urls.updateQuantity : config.urls.removeProduct,\n window.location.origin\n );\n url.searchParams.append('pid', updatedItem.sku);\n url.searchParams.append('uuid', pliUUID);\n url.searchParams.append('quantity', updatedItem.quantity);\n\n window\n .fetch(\n url, { method: 'GET' }\n )\n .then(response => response.json())\n .then((responseJson) => {\n const quantityTotal = responseJson.numItems || 0;\n const { minicartCountOfItems } = updatedItem.quantity > 0\n ? responseJson.resources\n : responseJson.basket.resources;\n updateShopMiniCart({ quantityTotal, minicartCountOfItems });\n callback(true);\n });\n } else {\n callback(false);\n }\n });\n };\n\n // load bambuser script\n window.initBambuserLiveShopping = function (item) { window.initBambuserLiveShopping.queue.push(item); };\n window.initBambuserLiveShopping.queue = [];\n const scriptNode = document.createElement('script');\n scriptNode.src = config.urls.embedScript;\n document.body.appendChild(scriptNode);\n}\n\n/**\n * updates bambuser player with SFRA product data\n * @param {string} widgetID product data retrieved from sfra\n * @param {string} widgetURL product data retrieved from sfra\n * @returns {void}\n*/\n/* eslint-disable */\n// the code is from bambuser dashboard and we disabled the linting as it doesn't comply with it\nfunction initLiveShoppingWidget() {\n const configEl = document.querySelector('.js_bambuser-fab-config');\n if (configEl) {\n const configFab = JSON.parse(configEl.getAttribute('data-config'));\n const skipPage = configEl.getAttribute('fabSkipPage');\n if (configFab.enableFAB && skipPage !== \"true\") {\n if (!window.initBambuserLiveShopping) {\n initIntegration();\n }\n const widgetElementId = 'bambuser-liveshopping-widget';\n window.__bfwId = configFab.fabWidgetId;\n \n if (document.getElementById(widgetElementId) && window.__bfwInit) {\n return window.__bfwInit();\n }\n \n if (document.getElementById(widgetElementId)) {\n return;\n }\n \n const s = document.createElement('script');\n const ss = document.getElementsByTagName('script')[0];\n s.id = widgetElementId;\n s.src = configFab.fabWidgetURL;\n ss.parentNode.insertBefore(s, ss);\n }\n }\n}\n\n/**\n * Initialize LiveShopping Stream\n *\n * @param {string} showId id of stream\n * @param {Element} node trigger DOM element\n * @param {string} type type of player, default overlay\n */\nfunction initStream(showId, node, type = 'overlay') {\n // check if integration has been initialized\n if (!window.initBambuserLiveShopping) {\n initIntegration();\n }\n // intitialize stream for element\n if (window.initBambuserLiveShopping) {\n window.initBambuserLiveShopping({\n showId,\n node,\n type,\n });\n }\n}\n\n/**\n * Hide miniplayer on certain pages\n */\nfunction miniplayerSkipPages() {\n const configMiniplayer = document.querySelector('.js_bambuser-fab-config');\n\n if (configMiniplayer) {\n const skipPageMiniplayer = configMiniplayer.getAttribute('miniplayerSkipPage');\n const miniplayer = window.parent.document.querySelector('[data-bambuser-liveshopping-player-id]');\n if (miniplayer) {\n if (skipPageMiniplayer === 'true') {\n miniplayer.classList.remove('show-miniplayer');\n if (!miniplayer.classList.contains('hide-miniplayer')){\n miniplayer.classList.add('hide-miniplayer');\n }\n } else if (skipPageMiniplayer !== 'true') {\n miniplayer.classList.remove('hide-miniplayer');\n if (!miniplayer.classList.contains('show-miniplayer')){\n miniplayer.classList.add('show-miniplayer');\n }\n }\n }\n }\n}\n\nmodule.exports.initStream = initStream;\nmodule.exports.initLiveShoppingWidget = initLiveShoppingWidget;\nmodule.exports.miniplayerSkipPages = miniplayerSkipPages;\n"],"sourceRoot":""}