{"version":3,"file":"default/js/einsteinCarousel.js","mappings":"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","sources":["webpack://cpao_fol_storefront/./cartridges/app_storefront_base/cartridge/client/default/js/einsteinCarousel.js"],"sourcesContent":["'use strict';\n\n/**\n * Validates and Return the cquotient namespace provided by the commerce cloud platform\n * @returns {Object} - einsteinUtils or null\n */\nfunction getEinsteinUtils() {\n var einsteinUtils = window.CQuotient;\n if (einsteinUtils && (typeof einsteinUtils.getCQUserId === 'function') && (typeof einsteinUtils.getCQCookieId === 'function')) {\n return einsteinUtils;\n }\n return null;\n}\n\n/**\n * Renders the einstein response into a given dom element\n * @param {jQuery} $parentElement parent element where recommendations will show.\n */\nfunction showControls($parentElement) {\n var $liTemplate = $parentElement.find('.hidden-indicators-template li');\n var $carouselItems = $parentElement.find('.carousel-item');\n\n $carouselItems.each(function (index) {\n var $newIndiator = $liTemplate.clone();\n if (index === 0) {\n $parentElement.find('.pd-carousel-indicators').append($newIndiator);\n } else {\n $newIndiator.removeClass('active');\n $parentElement.find('.pd-carousel-indicators').append($newIndiator);\n }\n $parentElement.find('.pd-carousel-indicators li').last().attr('data-position', index);\n $parentElement.removeClass('hide-indicators');\n });\n}\n\n/**\n * fills in the carousel with product tile html objects\n * @param {string} einsteinResponse string html for product tiles\n * @param {jQuery} $parentElement parent element where recommendations will show.\n */\nfunction fillDomElement(einsteinResponse, $parentElement) {\n var recommender = $parentElement.data('recommender');\n var recommendedProducts = einsteinResponse[recommender].recs;\n if (recommendedProducts && recommendedProducts.length > 0) {\n var template = $parentElement.data('template');\n var swatches = $parentElement.data('swatches');\n var displayRatings = $parentElement.data('displayratings');\n var components = [];\n components = recommendedProducts.map(function (recommendedProduct) {\n var tiledefinition = {};\n tiledefinition.classxs = $parentElement.data('bsxs');\n tiledefinition.classsm = $parentElement.data('bssm');\n tiledefinition.classmd = $parentElement.data('bsmd');\n tiledefinition.template = template;\n tiledefinition.swatches = swatches;\n tiledefinition.displayratings = displayRatings;\n tiledefinition.model = {\n type: 'product',\n id: recommendedProduct.id\n };\n return tiledefinition;\n });\n\n var url = new URL($parentElement.data('product-load-url'));\n url.searchParams.append('components', JSON.stringify(components));\n url.searchParams.append('limit', $parentElement.data('limit'));\n url.searchParams.append('recommender', recommender);\n $.ajax({\n url: url.href,\n type: 'get',\n dataType: 'html',\n success: function (html) {\n $parentElement.find('.carousel-inner').html(html);\n showControls($parentElement);\n $('body').trigger('carousel:setup', {});\n },\n error: function () {\n $parentElement.spinner().stop();\n }\n });\n }\n}\n\n /**\n * Processes a recommendation tile, with an already initialized category specific anchors array\n * @param {jQuery} $parentElement parent element where recommendations will show.\n * @param {Object} einsteinUtils cquotient object\n * @param {Array} anchorsArray array of objects representing anchors\n */\nfunction processRecommendationsTile($parentElement, einsteinUtils, anchorsArray) {\n var recommender = $parentElement.data('recommender');\n\n var params = {\n userId: einsteinUtils.getCQUserId(),\n cookieId: einsteinUtils.getCQCookieId(),\n ccver: '1.01'\n };\n\n if (anchorsArray) {\n params.anchors = anchorsArray;\n }\n\n /**\n * Processes a recommendation responses\n * @param {Object} einsteinResponse cquotient object\n */\n function recommendationsReceived(einsteinResponse) {\n fillDomElement(einsteinResponse, $parentElement);\n $parentElement.spinner().stop();\n }\n\n if (einsteinUtils.getRecs) {\n einsteinUtils.getRecs(einsteinUtils.clientId, recommender, params, recommendationsReceived);\n } else {\n einsteinUtils.widgets = einsteinUtils.widgets || []; // eslint-disable-line no-param-reassign\n einsteinUtils.widgets.push({\n recommenderName: recommender,\n parameters: params,\n callback: recommendationsReceived\n });\n }\n}\n\n/**\n * Processes a recommendation tile, with an already initialized product specific anchors array\n * @param {jQuery} $parentElement parent element where recommendations will show.\n * @returns {Array} - containing an anchor object\n */\nfunction createProductAnchor($parentElement) {\n return [{\n id: $parentElement.data('primaryProductId'),\n sku: $parentElement.data('secondaryProductId'),\n type: $parentElement.data('alternativeGroupType'),\n alt_id: $parentElement.data('alternativeGroupId')\n }];\n}\n\n/**\n * Rerieves data attributes from parent element and converts to gretel compatible recommenders array\n * @param {jQuery} $parentElement parent element where recommendations will show.\n * @returns {Array} - containing an anchor object\n */\nfunction createCategoryAnchor($parentElement) {\n return [{ id: $parentElement.data('categoryId') }];\n}\n\n/**\n * Gets all placeholder elements, which hold einstein recommendations queries the details from the\n * einstein engine and feeds them back to the dom element\n */\nfunction loadRecommendations() {\n var einsteinUtils = getEinsteinUtils();\n if (einsteinUtils) {\n var $recommendationTiles = $('.einstein-carousel');\n $recommendationTiles.each(function () {\n var $parentElement = $(this);\n $parentElement.spinner().start();\n if ($(this).closest('.experience-einstein-einsteinCarouselProduct').length) {\n return processRecommendationsTile($parentElement, einsteinUtils, createProductAnchor($parentElement));\n } else if ($(this).closest('.experience-einstein-einsteinCarouselCategory').length) {\n return processRecommendationsTile($parentElement, einsteinUtils, createCategoryAnchor($parentElement));\n }\n return processRecommendationsTile($parentElement, einsteinUtils);\n });\n }\n}\n\n$(document).ready(function () {\n loadRecommendations();\n});\n"],"names":["getEinsteinUtils","einsteinUtils","window","CQuotient","getCQUserId","getCQCookieId","showControls","$parentElement","$liTemplate","find","$carouselItems","each","index","$newIndiator","clone","append","removeClass","last","attr","fillDomElement","einsteinResponse","recommender","data","recommendedProducts","recs","length","template","swatches","displayRatings","components","map","recommendedProduct","tiledefinition","classxs","classsm","classmd","displayratings","model","type","id","url","URL","searchParams","JSON","stringify","$","ajax","href","dataType","success","html","trigger","error","spinner","stop","processRecommendationsTile","anchorsArray","params","userId","cookieId","ccver","anchors","recommendationsReceived","getRecs","clientId","widgets","push","recommenderName","parameters","callback","createProductAnchor","sku","alt_id","createCategoryAnchor","loadRecommendations","$recommendationTiles","start","closest","document","ready"],"sourceRoot":""}