{"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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"}