{"version":3,"file":"BazaarvoiceRatingAndReviews.js","names":["BazaarvoiceRatingAndReviews","a","setters","Event","BazaarvoiceService","default","mix","AnalyticsMixin","execute","with","bindEvents","on","onSubmissionLoad","bind","onSubmissionSubmitted","emit","category","action","label","analytics","extraData","event_name","product_info","eventData","contentType","typeData","review","emitEvent","eventName","question","answer","virtualPageURL","concat","element","dataset","pathname","virtualPageTitle","destroy","removeListener"],"sources":["components/product/BazaarvoiceRatingAndReviews.js"],"sourcesContent":["import { Event } from 'services/EventEmitter';\nimport BazaarvoiceService from './BazaarvoiceService';\nimport { mix } from 'core/mixwith';\nimport AnalyticsMixin from 'mixins/Analytics';\n\n/**\n * This is a description of the BazaarvoiceRatingAndReviews constructor function.\n * @class\n * @classdesc BazaarvoiceService extend. It emits BazaarVoice RR specific events.\n * @extends BazaarvoiceService\n */\nexport default class BazaarvoiceRatingAndReviews extends mix(BazaarvoiceService).with(AnalyticsMixin) {\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.on('BV.submission.load', this.onSubmissionLoad.bind(this));\n Event.on('BV.submission.submitted', this.onSubmissionSubmitted.bind(this));\n }\n\n /**\n * Handler for submissionLoad event,\n * triggered when a consumer opens a review or Q&A submission form.\n */\n onSubmissionLoad() {\n Event.emit('analytics.event', {\n category: 'product detail page',\n action: 'write review',\n label: this.analytics.label,\n extraData: {\n event_name: 'write_review',\n product_info: this.analytics.label,\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 onSubmissionSubmitted(eventData) {\n if (eventData.contentType === 'review' || eventData.contentType === 'question' || eventData.contentType === 'answer') {\n const contentTypeMap = {\n review: {\n emitEvent: 'BV.review.submitted',\n action: 'submit a review',\n eventName: 'submit_review',\n },\n question: {\n emitEvent: 'BV.question.submitted',\n action: 'ask a question',\n eventName: 'ask_question',\n },\n answer: {\n emitEvent: 'BV.answer.submitted',\n action: 'post answer',\n eventName: 'post_answer',\n },\n };\n const typeData = contentTypeMap[eventData.contentType];\n\n if (eventData.contentType === 'question') {\n Event.emit('analytics.virtualPage', {\n virtualPageURL: `/quick-view${this.element.dataset.pathname}/questions-&-answers/ask-question`,\n virtualPageTitle: 'questions & answers ask question',\n });\n }\n\n Event.emit(typeData.emitEvent);\n Event.emit('analytics.event', {\n category: 'product detail page',\n action: typeData.action,\n label: this.analytics.label,\n extraData: {\n event_name: typeData.eventName,\n product_info: this.analytics.label,\n },\n });\n }\n }\n\n /**\n * Destroy is called automatically after the component is being removed from the DOM\n * You must always destroy the listeners attached to an element to avoid any memory leaks\n */\n destroy() {\n Event.removeListener('BV.submission.load');\n Event.removeListener('BV.submission.submitted');\n }\n}\n"],"mappings":"qJAWqBA,CAA2B,QAAAC,CAAA,oBAAAC,OAAA,WAAAD,CAAA,EAXvCE,CAAK,CAAAF,CAAA,CAALE,KAAK,WAAAF,CAAA,EACPG,CAAkB,CAAAH,CAAA,CAAAI,OAAA,WAAAJ,CAAA,EAChBK,CAAG,CAAAL,CAAA,CAAHK,GAAG,WAAAL,CAAA,EACLM,CAAc,CAAAN,CAAA,CAAAI,OAAA,GAAAG,OAAA,SAAAA,CAAA,EAAAP,CAAA,WAQAD,CAA2B,CAAjC,aAA0C,CAAAM,CAAG,CAACF,CAAkB,CAAC,CAACK,IAAI,CAACF,CAAc,CAAE,CAKlGG,UAAUA,CAAA,CAAG,CACT,KAAK,CAACA,UAAU,CAAC,CAAC,CAClBP,CAAK,CAACQ,EAAE,CAAC,oBAAoB,CAAE,IAAI,CAACC,gBAAgB,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC,CAChEV,CAAK,CAACQ,EAAE,CAAC,yBAAyB,CAAE,IAAI,CAACG,qBAAqB,CAACD,IAAI,CAAC,IAAI,CAAC,CAC7E,CAMAD,gBAAgBA,CAAA,CAAG,CACfT,CAAK,CAACY,IAAI,CAAC,iBAAiB,CAAE,CAC1BC,QAAQ,CAAE,qBAAqB,CAC/BC,MAAM,CAAE,cAAc,CACtBC,KAAK,CAAE,IAAI,CAACC,SAAS,CAACD,KAAK,CAC3BE,SAAS,CAAE,CACPC,UAAU,CAAE,cAAc,CAC1BC,YAAY,CAAE,IAAI,CAACH,SAAS,CAACD,KACjC,CACJ,CAAC,CACL,CAOAJ,qBAAqBA,CAACS,CAAS,CAAE,CAC7B,GAA8B,QAAQ,GAAlCA,CAAS,CAACC,WAAwB,EAA8B,UAAU,GAApCD,CAAS,CAACC,WAA0B,EAA8B,QAAQ,GAAlCD,CAAS,CAACC,WAAwB,CAAE,MAkB5G,CAAAC,CAAQ,CAjBS,CACnBC,MAAM,CAAE,CACJC,SAAS,CAAE,qBAAqB,CAChCV,MAAM,CAAE,iBAAiB,CACzBW,SAAS,CAAE,eACf,CAAC,CACDC,QAAQ,CAAE,CACNF,SAAS,CAAE,uBAAuB,CAClCV,MAAM,CAAE,gBAAgB,CACxBW,SAAS,CAAE,cACf,CAAC,CACDE,MAAM,CAAE,CACJH,SAAS,CAAE,qBAAqB,CAChCV,MAAM,CAAE,aAAa,CACrBW,SAAS,CAAE,aACf,CACJ,CAAC,CAC+BL,CAAS,CAACC,WAAW,CAAC,CAExB,UAAU,GAApCD,CAAS,CAACC,WAA0B,EACpCrB,CAAK,CAACY,IAAI,CAAC,uBAAuB,CAAE,CAChCgB,cAAc,eAAAC,MAAA,CAAgB,IAAI,CAACC,OAAO,CAACC,OAAO,CAACC,QAAQ,qCAAmC,CAC9FC,gBAAgB,CAAE,kCACtB,CAAC,CAAC,CAGNjC,CAAK,CAACY,IAAI,CAACU,CAAQ,CAACE,SAAS,CAAC,CAC9BxB,CAAK,CAACY,IAAI,CAAC,iBAAiB,CAAE,CAC1BC,QAAQ,CAAE,qBAAqB,CAC/BC,MAAM,CAAEQ,CAAQ,CAACR,MAAM,CACvBC,KAAK,CAAE,IAAI,CAACC,SAAS,CAACD,KAAK,CAC3BE,SAAS,CAAE,CACPC,UAAU,CAAEI,CAAQ,CAACG,SAAS,CAC9BN,YAAY,CAAE,IAAI,CAACH,SAAS,CAACD,KACjC,CACJ,CAAC,CACL,CACJ,CAMAmB,OAAOA,CAAA,CAAG,CACNlC,CAAK,CAACmC,cAAc,CAAC,oBAAoB,CAAC,CAC1CnC,CAAK,CAACmC,cAAc,CAAC,yBAAyB,CAClD,CACJ,CAAC","ignoreList":[]}