{"version":3,"file":"grouped-category-omni-analytics-be4a8f17.js","sources":["../../../client/src/javascripts/customer_pages/_grouped-category/grouped-category-omni-analytics.js"],"sourcesContent":["\nimport { builderDispatch } from '../_utils/ui';\nimport GroupedCategoryChangeEvents from './grouped-category-change-events';\nimport QuantityPricingTools from './quantity-pricing-tools';\nimport Currency from '../_utils/tools/currency';\nimport md5 from 'js-md5';\n\n// -----------------------------------------------------------\n\nbuilderDispatch.register((payload) => {\n switch (payload.type) {\n case GroupedCategoryChangeEvents.PAGE_LOADED:\n case GroupedCategoryChangeEvents.PRODUCT_SELECTED:\n if (typeof s_omni === 'object') {\n payload = {\n ...payload,\n productSelected: payload.type === GroupedCategoryChangeEvents.PRODUCT_SELECTED,\n };\n\n payload.printsItemPage\n ? (new OmniAttributesPrints(payload)).send()\n : (new OmniAttributesPrism(payload)).send();\n }\n break;\n }\n});\n\n// -----------------------------------------------------------\n\nconst PARAMETERS = [\n 'pageName',\n 'campaign',\n 'channel',\n 'prop1',\n 'prop2',\n 'prop3',\n 'prop4',\n 'prop5',\n 'prop8',\n 'prop21',\n 'events',\n 'products'\n];\n\nlet lastSentHash;\n\nclass OmniAttributesBase {\n constructor({ product, deliveryOptions }) {\n this.product = product;\n\n this.fulfilledMethods = (product.delivery_options || [])\n .map((deliveryOptionId) =>\n deliveryOptions.find((delOpt) => delOpt.key === deliveryOptionId).analytics_id\n );\n }\n\n get campaign() {\n const campaign = {\n adid: s_omni.getQueryParam('adid'),\n fbref: s_omni.getQueryParam('fb_ref'),\n sourceid: s_omni.getQueryParam('sourceid'),\n get campaignId() {\n if (this.adid) { return this.adid; }\n if (this.fbref) { return this.fbref.split('_')[1]; }\n if (this.sourceid) { return this.sourceid; }\n return '';\n },\n };\n\n return campaign.campaignId;\n }\n\n get partnerId() {\n // ensure partner id has a value; revert to upc if nil\n return this.product.partner_id || this.product.code;\n }\n\n get channel() {\n return window.location.href;\n }\n\n get events() {\n const events = ['prodView', 'event1', 'event33'];\n\n if (this.fulfilledMethods.indexOf('PUT') === 0) {\n events.push('event29'); /* PUT = Pick Up Today */\n }\n\n return events.join(',');\n }\n\n get prop1() {\n return 'Item';\n }\n\n get prop4() {\n return '';\n }\n\n get prop8() {\n return 'Walmart Photo: LiveLink';\n }\n\n get prop21() {\n return this.fulfilledMethods.join(',');\n }\n\n get products() {\n return [\n 'walmartphotocenter:',\n this.partnerId,\n this.copies,\n this.price,\n '',\n 'evar30=Walmart.com'\n ].join(';');\n }\n\n send() {\n const payload = PARAMETERS.reduce((acc, key) => {\n acc[key] = this[key];\n return acc;\n }, {});\n\n // check the hash of this payload against the last one\n // return if they're the same to avoid\n // double sends.\n const payloadHash = md5(Object.values(payload).join('-'));\n if (lastSentHash === payloadHash) {\n return;\n }\n\n Object.assign(s_omni, payload);\n\n s_omni.t();\n\n lastSentHash = payloadHash;\n }\n}\n\nclass OmniAttributesPrism extends OmniAttributesBase {\n constructor({ product, deliveryOptions, breadcrumbs, copies = 1, productSelected }) {\n super({ product, deliveryOptions });\n\n this.breadcrumbs = breadcrumbs || [];\n this.copies = copies;\n this.productSelected = productSelected;\n }\n\n get category() {\n return (this.breadcrumbs[0] || {}).name;\n }\n\n get price() {\n const unitPriceForQuantity = this.product.show_quantity_dropdown\n ? this.quantityPricingTools.getUnitPriceForQuantity(this.copies)\n : this.product.minimum_price; // minimum_price is in the form of, eg, 18.45\n\n return Currency.format(unitPriceForQuantity * this.copies, { symbol: false });\n }\n\n get pageName() {\n return `${this.category} [Item Page]`;\n }\n\n get pageTitle() {\n return (this.breadcrumbs[this.breadcrumbs.length - 1] || {}).name;\n }\n\n get prop2() {\n return this.productSelected\n ? `${this.product.title} Product ${this.partnerId}`\n : this.pageTitle;\n }\n\n get prop3() {\n return this.category;\n }\n\n get prop5() {\n return this.breadcrumbs.map((crumb) => crumb.name).join(': ');\n }\n\n get quantityPricingTools() {\n return new QuantityPricingTools(this.product);\n }\n}\n\nclass OmniAttributesPrints extends OmniAttributesBase {\n get price() {\n return this.product.price / 100 || null;\n }\n\n get copies() {\n return 1;\n }\n\n get pageName() {\n return 'Prints [Item Page]';\n }\n\n get prop2() {\n return `${this.product.size}, ${this.product.finish} Product ${this.partnerId}`;\n }\n\n get prop3() {\n return 'Prints';\n }\n\n get prop5() {\n return 'Prints';\n }\n}\n\n// -----------------------------------------------------------\n\nexport { OmniAttributesPrism };\n"],"names":["builderDispatch","payload","GroupedCategoryChangeEvents","OmniAttributesPrints","OmniAttributesPrism","PARAMETERS","lastSentHash","OmniAttributesBase","product","deliveryOptions","deliveryOptionId","delOpt","events","acc","key","payloadHash","md5","breadcrumbs","copies","productSelected","unitPriceForQuantity","Currency","crumb","QuantityPricingTools"],"mappings":"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"}