{"version":3,"file":"BazaarVoiceHosted.js","names":["BazaarVoiceHosted","a","setters","deepMerge","ThirdPartyLoader","default","setHash","Event","trigger","execute","constructor","element","options","arguments","length","version","afterInit","emit","onDependencyLoaded","loadScript","onScriptLoaded","data","events","submissionLoad","onSubmissionLoad","bind","submissionSubmitted","onSubmissionSubmitted","bubbles","window","bvCallback","onBVCallback","$BV","configure","BV","initCache","selectors","reviews","document","querySelector","questions","reviewsTab","questionsTab","reviewsTabHash","parentElement","getAttribute","questionsTabHash","bindEvents","once","eventData","reviewsApp","swat_reviews","questionsApp","swat_questions","on","location","hash"],"sources":["components/global/BazaarVoiceHosted.js"],"sourcesContent":["import { deepMerge } from 'toolbox/deepMerge';\nimport ThirdPartyLoader from 'components/global/ThirdPartyLoader';\nimport { setHash } from 'toolbox/location';\nimport { Event } from 'services/EventEmitter';\nimport { trigger } from 'toolbox/event';\n\n/**\n * This is a description of the BazaarVoiceHosted constructor function.\n * @class\n * @classdesc Loads bazaarvoice script and after sets up some necessary events\n * @extends ThirdPartyLoader\n */\nexport default class BazaarVoiceHosted extends ThirdPartyLoader {\n /**\n * Constructor of the class that mainly merge the options of the components\n * @param {HTMLElement} element HTMLElement of the component\n * @param {object} options options that belongs to the component\n */\n constructor(element, options = {}) {\n super(element, deepMerge({\n version: 'v1', // the default version of the BV library; can also be set to v2\n }, options));\n }\n\n /**\n * After init\n * Run any script after the component is fully initialized\n */\n afterInit() {\n Event.emit('BV.dependency.check');\n }\n\n /**\n * On BV dependent component load event handler, called when BV dependent component is loaded\n */\n onDependencyLoaded() {\n this.loadScript();\n }\n\n /**\n * On script load handler, called when the third-party is loaded\n * @param {Object} data - Response of the provider\n */\n onScriptLoaded(data) {\n const events = {\n submissionLoad: this.onSubmissionLoad.bind(this),\n submissionSubmitted: this.onSubmissionSubmitted.bind(this),\n };\n\n super.onScriptLoaded(data);\n\n trigger('BV.dependency.scriptloaded', this.element, { bubbles: true });\n\n if (typeof window.bvCallback !== 'function') {\n window.bvCallback = this.onBVCallback.bind(this);\n }\n\n if (this.options.version === 'v1' && typeof $BV !== 'undefined' && $BV !== 'null') {\n $BV.configure('global', { events });\n } else if (this.options.version === 'v2' && typeof BV !== 'undefined' && BV !== 'null') {\n BV.configure('global', { events });\n }\n }\n\n /**\n * All selectors must be cached. Never cache elements that are out of the component scope\n */\n initCache() {\n this.selectors.reviews = document.querySelector('[data-element-type=\"reviews\"]');\n this.selectors.questions = document.querySelector('[data-element-type=\"questions\"]');\n this.selectors.reviewsTab = document.querySelector('[data-titlehash=\"reviews\"]');\n this.selectors.questionsTab = document.querySelector('[data-titlehash=\"questions-answers\"]');\n this.reviewsTabHash = this.selectors.reviews ? this.selectors.reviews.parentElement.getAttribute('data-tab-hash') : '';\n this.questionsTabHash = this.selectors.questions ? this.selectors.questions.parentElement.getAttribute('data-tab-hash') : '';\n }\n\n /**\n * Should contain only event listeners and nothing else\n * All the event handlers should be into a separated function. No usage of anonyous function\n */\n bindEvents() {\n super.bindEvents();\n Event.once('BV.dependency.loaded', this.onDependencyLoaded, this);\n }\n\n /**\n * Handler for submissionSubmitted event,\n * triggered when a consumer submits a submission form.\n * @param {Object} eventData - Third-party provider event data.\n */\n onSubmissionSubmitted(eventData) {\n Event.emit('BV.submission.submitted', eventData);\n }\n\n /**\n * Bazaarvoice library callback\n * @param {Object} BV Bazaarvoice library instance\n */\n onBVCallback(BV) {\n const reviewsApp = BV.reviews || BV.swat_reviews;\n const questionsApp = BV.questions || BV.swat_questions;\n\n reviewsApp.on('show', () => {\n if (this.reviewsTabHash) {\n if (!this.selectors.reviews.getAttribute('data-bv-show')) {\n document.location.hash = '';\n setHash('tab', this.reviewsTabHash);\n } else {\n trigger('tab.change', this.selectors.reviewsTab, {\n bubbles: true,\n });\n }\n } else {\n document.location.hash = '';\n setHash('section', 'reviews');\n }\n });\n\n questionsApp.on('show', () => {\n if (this.questionsTabHash) {\n if (!this.selectors.reviews.getAttribute('data-bv-show')) {\n document.location.hash = '';\n setHash('tab', this.questionsTabHash);\n } else {\n trigger('tab.change', this.selectors.questionsTab, {\n bubbles: true,\n });\n }\n }\n });\n }\n\n /**\n * Handler for submissionLoad event,\n * triggered when a consumer opens a review or Q&A submission form.\n * @param {Object} eventData - Third-party provider event data.\n */\n onSubmissionLoad(eventData) {\n Event.emit('BV.submission.load', eventData);\n }\n}\n"],"mappings":"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","ignoreList":[]}