{"version":3,"file":"default/js/bambuser/client.js","mappings":"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","sources":["webpack://autobahn-build/./int_bambuser/cartridges/int_bambuser/cartridge/client/default/js/bambuser/client.js","webpack://autobahn-build/./int_bambuser/cartridges/int_bambuser/cartridge/client/default/js/bambuser/modules/bambuser.js","webpack://autobahn-build/webpack/bootstrap"],"sourcesContent":["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 helper functions for the Bambuser integration\n * @module bambuser\n */\n\n/**\n* Reloads the iframe page for live commerce\n* @returns {void}\n*/\nfunction reloadIframePage() {\n    /* eslint-disable */\n    $('iframe').each((i, item) => {\n        const $pageFrame = $(item);\n        const parentId = $($pageFrame.parent()).attr('id');\n        /* eslint-enable */\n        const currentPage = window.location.href;\n        if (currentPage.indexOf('Order-Confirm') > -1) {\n            return;\n        }\n\n        if (parentId && parentId.indexOf('livecommerce-surf') > -1) {\n            $pageFrame.attr('src', currentPage);\n        }\n    });\n}\n\n/**\n* Updates the shop's mini cart\n* @param {Object} options - options for updating the mini cart\n* @param {number} options.quantityTotal - total quantity of items in the mini cart\n* @param {number} options.minicartCountOfItems - count of items in the mini cart\n* @returns {void}\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 the Bambuser product with the given product response, player, and configuration\n* @param {Object} productResponse - the response from the Bambuser API for the product\n* @param {Object} player - the Bambuser player object\n* @param {Object} config - the configuration for the Bambuser product\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) => 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) => s()\n                        .name(size.name)\n                        .inStock(size.inStock)\n                        .price((pr) => pr\n                            .currency(size.price.currency)\n                            .current(size.price.current))\n                        .sku(size.sku)))))));\n    }\n}\n\n/**\n* Pauses the video playback if the bambuserPlayer object is available in the parent window\n*/\nfunction pauseVideo() {\n    if (window.parent.bambuserPlayer) {\n        window.parent.bambuserPlayer.pause();\n    }\n}\n\n/**\n* Continues the video playback if the bambuser player is available\n* @returns {void}\n*/\nfunction continueVideo() {\n    if (window.parent.bambuserPlayer) {\n        window.parent.bambuserPlayer.play();\n    }\n}\n\n/**\n* Checks if the cart is empty and updates the player's cart accordingly\n* @param {Object} player - the player object\n* @returns {void}\n*/\nfunction isCartEmpty(player) {\n    let basketUrl;\n    const basketItems = document.querySelector('.basket-items');\n\n    if (basketItems !== null) {\n        basketUrl = basketItems.getAttribute('data-basket-action');\n    }\n    // eslint-disable-next-line no-undef\n    $.ajax({\n        url: basketUrl,\n        method: 'GET',\n        success(data) {\n            if (data.quantityTotal === 0) {\n                player.updateCart({\n                    items: [],\n                });\n            }\n        },\n        error(e) {\n            window.console.error('Could not load basket', e);\n        },\n    });\n}\n\n/**\n* Initializes the Bambuser integration\n* @returns {void}\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        window.bambuserPlayer = 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            ui: {\n                hideCartButton: !config.cartIntegration,\n            },\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            )\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 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            if (updatedItem.quantity < 0) { // WGACA MODIFICATION\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(url, { method: 'GET' })\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({\n                        success: false,\n                        reason: \"custom-error\",\n                        message: \"For additional quantities, please email LiveShopping@wgacany.com\",\n                    });\n                }\n            }\n        });\n\n        player.on(player.EVENT.SYNC_CART_STATE, () => {\n            // check if the basket is empty\n            isCartEmpty(player);\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/* eslint-disable */\n// the code is from bambuser dashboard and we disabled the linting as it doesn't comply with it\n/**\n* Initializes the Bambuser Live Shopping Widget\n* @returns {void}\n*/\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('body')[0]; // WGACA MODIFICATION\n            const aa = ss.lastElementChild;\n            s.id = widgetElementId;\n            s.src = configFab.fabWidgetURL;\n            aa.parentNode.insertBefore(s, aa);\n        }\n    }\n}\n\n/**\n* Initializes a Bambuser stream for a specific element\n* @param {string} showId - the ID of the show to stream\n* @param {HTMLElement} node - the element to stream the show on\n* @param {string} [type='overlay'] - the type of stream to initialize (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* Function that handles miniplayer page skipping\n* @returns {void}\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                    pauseVideo();\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                    continueVideo();\n                }\n            }\n        }\n    }\n}\n\nmodule.exports.initStream = initStream;\nmodule.exports.initLiveShoppingWidget = initLiveShoppingWidget;\nmodule.exports.miniplayerSkipPages = miniplayerSkipPages;\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"],"names":["bambuserHeroWrapper","bambuser","updateShopMiniCart","_ref","quantityTotal","minicartCountOfItems","window","$","trigger","document","dispatchEvent","Event","bubbles","each","i","item","$pageFrame","parentId","parent","attr","currentPage","location","href","indexOf","initIntegration","config","basketPLIs","configEl","querySelector","JSON","parse","dataset","e","console","error","enabled","onBambuserLiveShoppingReady","player","dismissMiniplayer","productMiniplayer","checkoutMiniplayer","bambuserPlayer","buttonsDisplay","NO_DISPLAY","BUTTON","CLOSE","MINIMIZE","NONE","dismiss","LINK","AUTO","product","checkout","configure","locale","currency","buttons","ui","hideCartButton","cartIntegration","on","EVENT","ADD_TO_CART","addedItem","callback","payLoad","FormData","append","sku","quantity","fetch","urls","addToCart","method","body","then","response","json","productJson","pliUUID","CHECKOUT","showCheckout","origin","PROVIDE_PRODUCT_DATA","event","Array","prototype","forEach","call","products","prod","url","URL","pathname","productData","searchParams","id","ref","responseObj","productResponse","updateProduct","bambuserPID","factory","p","brandName","brand","defaultVariationIndex","description","name","variations","v","map","variation","attributes","a","colorName","imageUrls","imageURLs","sizes","s","size","inStock","price","pr","current","updateBambuserProduct","UPDATE_ITEM_IN_CART","updatedItem","updateQuantity","removeProduct","responseJson","numItems","resources","basket","success","reason","message","SYNC_CART_STATE","basketUrl","basketItems","getAttribute","ajax","data","updateCart","items","isCartEmpty","initBambuserLiveShopping","queue","push","scriptNode","createElement","src","embedScript","appendChild","debug","module","exports","initStream","showId","node","type","arguments","length","undefined","initLiveShoppingWidget","configFab","skipPage","enableFAB","widgetElementId","__bfwId","fabWidgetId","getElementById","__bfwInit","aa","getElementsByTagName","lastElementChild","fabWidgetURL","parentNode","insertBefore","miniplayerSkipPages","configMiniplayer","skipPageMiniplayer","miniplayer","classList","remove","contains","add","pause","play","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","querySelectorAll","require","el","streamId"],"sourceRoot":""}