{"version":3,"file":"Tracking.js","sources":["requirejs/Products/Tracking.js"],"sourcesContent":["define([\"require\", \"exports\", \"knockout\", \"UI/Context\"], function (require, exports, ko, Context_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.TrackPage = exports.TrackEvent = exports.LineSourceTracking = void 0;\n class LineSourceTracking {\n constructor(data) {\n this.AppendTo = (other) => {\n const thisSource = this.Source.peek();\n const thisSourceType = this.SourceType.peek();\n const thisContext = this.Context.peek();\n const thisRelatedId = this.RelatedId.peek();\n const thisSearchId = this.SearchId.peek();\n const thisSearchTerm = this.SearchTerm.peek();\n const thisIndex = this.Index.peek();\n const otherSource = other.Source.peek();\n const otherSourceType = other.SourceType.peek();\n const otherContext = other.Context.peek();\n const otherRelatedId = other.RelatedId.peek();\n const otherSearchId = other.SearchId.peek();\n const otherSearchTerm = other.SearchTerm.peek();\n const otherIndex = other.Index.peek();\n if (!otherSource && thisSource)\n other.Source(thisSource);\n if (!otherSourceType && thisSourceType)\n other.SourceType(thisSourceType);\n if (!otherContext && thisContext)\n other.Context(thisContext);\n if (otherRelatedId == null && thisRelatedId != null)\n other.RelatedId(thisRelatedId);\n if (!otherSearchId && thisSearchId)\n other.SearchId(thisSearchId);\n if (!otherSearchTerm && thisSearchTerm)\n other.SearchTerm(thisSearchTerm);\n if (otherIndex == null && thisIndex != null)\n other.Index(thisIndex);\n return other;\n };\n this.AddToProductTracking = (item) => {\n if (this.Source() != null) {\n item.item_list_id = this.Source();\n if (this.SourceType() != null) {\n item.item_list_id = `${this.SourceType()}: ${item.item_list_id}`;\n }\n if (this.Index() != null) {\n item.index = this.Index();\n }\n if (this.Context() != null) {\n item.item_list_name = this.Context();\n }\n }\n return item;\n };\n this.AddToUrl = (url, qsPrefix = \"recommendation\") => {\n var tracking = [];\n var parameters = [\n [\"Source\", this.Source()],\n [\"Type\", this.SourceType()],\n [\"Context\", this.Context()],\n [\"Id\", this.RelatedId()],\n [\"SearchId\", this.SearchId()],\n [\"SearchTerm\", this.SearchTerm()],\n [\"Index\", this.Index()]\n ];\n ko.utils.arrayForEach(parameters, p => {\n if (p[1] != null && (typeof p[1] !== 'string' || p[1].length > 0)) {\n tracking.push(qsPrefix + p[0] + \"=\" + encodeURIComponent(p[1]));\n }\n });\n if (tracking.length == 0)\n return url;\n var qsSymbol = url.indexOf('?') > -1 ? '&' : '?';\n return url + qsSymbol + tracking.join('&');\n };\n ko.mapping.fromJS(data, {}, this);\n this.Source = this.Source || ko.observable();\n this.SourceType = this.SourceType || ko.observable();\n this.Context = this.Context || ko.observable();\n this.RelatedId = this.RelatedId || ko.observable();\n this.SearchId = this.SearchId || ko.observable();\n this.SearchTerm = this.SearchTerm || ko.observable();\n this.Index = this.Index || ko.observable();\n this.Data = ko.computed(() => ({\n Source: this.Source(),\n SourceType: this.SourceType(),\n Context: this.Context(),\n RelatedId: this.RelatedId(),\n SearchId: this.SearchId(),\n SearchTerm: this.SearchTerm(),\n Index: this.Index()\n }));\n }\n static FromRequest(qsPrefix = \"recommendation\") {\n const data = {\n Source: null,\n SourceType: null,\n Context: null,\n RelatedId: null,\n SearchTerm: null,\n SearchId: null,\n Index: null\n };\n const qs = window.location.search;\n if (qs == null || qs.length == 0)\n return new LineSourceTracking(data);\n const parameterMap = [\n [qsPrefix + \"Source\", x => data.Source = x],\n [qsPrefix + \"Type\", x => data.SourceType = x],\n [qsPrefix + \"Context\", x => data.Context = x],\n [qsPrefix + \"Id\", x => data.RelatedId = x],\n [qsPrefix + \"SearchId\", x => data.SearchId = x],\n [qsPrefix + \"SearchTerm\", x => data.SearchTerm = x],\n [qsPrefix + \"Index\", x => data.Index = parseInt(x)]\n ];\n const parameters = qs.substring(1).split('&');\n ko.utils.arrayForEach(parameters, p => {\n var values = p.split('=');\n if (values.length == 2) {\n var parameter = ko.utils.arrayFirst(parameterMap, p => p[0] == values[0]);\n if (parameter)\n parameter[1](decodeURIComponent(values[1]));\n }\n });\n return new LineSourceTracking(data);\n }\n }\n exports.LineSourceTracking = LineSourceTracking;\n function TrackEvent(trackingStack) {\n var data = {\n Category: null,\n Action: null,\n Label: null\n };\n var appendValueToData = (key, value) => {\n if (value == null || value == \"\")\n return;\n if (data[key] == null || data[key] == \"\") {\n data[key] = value;\n return;\n }\n data[key] += `|${value}`;\n };\n trackingStack\n .forEach(obj => {\n if (obj == null)\n return;\n for (var key in data) {\n var value = obj[key];\n appendValueToData(key, value);\n }\n });\n Context_1.default.Sequence(Context_1.default.Sequence() + 1);\n var allEmpty = ![data.Category, data.Action, data.Label]\n .some(x => x != null && x.length > 0);\n if (allEmpty)\n return;\n var isNullOrEmpty = x => x == null || x.length == 0;\n if (isNullOrEmpty(data.Category))\n data.Category = \"Uncategorized\";\n if (isNullOrEmpty(data.Action))\n data.Action = \"Unknown\";\n if (isNullOrEmpty(data.Label))\n data.Label = \"Unknown\";\n if (Context_1.default.IsDev()) {\n console.log(\"Tracking:\", data.Category, data.Action, data.Label);\n }\n else {\n StullerTrackEvent(data.Category, data.Action, data.Label);\n }\n }\n exports.TrackEvent = TrackEvent;\n function TrackPage(page) {\n let pageURL = page || window.location.href;\n __gaTracker('set', 'page', pageURL);\n let pageViewObj = {\n 'page': pageURL,\n 'dimension1': Context_1.default.LoginId() ? \"Yes\" : \"No\",\n 'dimension2': Context_1.default.IsInShowcase() ? \"Yes\" : \"No\",\n 'dimension3': Context_1.default.UserMemberId() || \"None\",\n 'dimension4': Context_1.default.SessionId() || \"None\",\n 'dimension7': Context_1.default.SearchEngine() || \"\"\n };\n if (!pageViewObj.dimension7) {\n delete pageViewObj[\"dimension7\"];\n }\n __gaTracker('send', 'pageview', pageViewObj);\n }\n exports.TrackPage = TrackPage;\n});\n//# sourceMappingURL=Tracking.js.map"],"names":["define","require","exports","ko","Context_1","Object","defineProperty","value","TrackPage","TrackEvent","LineSourceTracking","constructor","data","this","AppendTo","thisSource","Source","peek","thisSourceType","SourceType","thisContext","Context","thisRelatedId","RelatedId","thisSearchId","SearchId","thisSearchTerm","SearchTerm","thisIndex","Index","otherSource","other","otherSourceType","otherContext","otherRelatedId","otherSearchId","otherSearchTerm","otherIndex","AddToProductTracking","item","item_list_id","index","item_list_name","AddToUrl","url","qsPrefix","tracking","parameters","utils","arrayForEach","p","length","push","encodeURIComponent","qsSymbol","indexOf","join","mapping","fromJS","observable","Data","computed","FromRequest","qs","window","location","search","parameterMap","x","parseInt","substring","split","values","parameter","arrayFirst","decodeURIComponent","trackingStack","Category","Action","Label","forEach","obj","key","default","Sequence","some","isNullOrEmpty","IsDev","console","log","StullerTrackEvent","page","pageURL","href","__gaTracker","let","pageViewObj","dimension1","LoginId","dimension2","IsInShowcase","dimension3","UserMemberId","dimension4","SessionId","dimension7","SearchEngine"],"mappings":"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"}