@microsoft/applicationinsights-clickanalytics-js 2.8.0-beta.2203-10 → 2.8.0-beta.2203-13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/browser/{ai.clck.2.8.0-beta.2203-10.cjs.js → ai.clck.2.8.0-beta.2203-13.cjs.js} +688 -514
  2. package/browser/ai.clck.2.8.0-beta.2203-13.cjs.js.map +1 -0
  3. package/browser/ai.clck.2.8.0-beta.2203-13.cjs.min.js +6 -0
  4. package/browser/ai.clck.2.8.0-beta.2203-13.cjs.min.js.map +1 -0
  5. package/browser/{ai.clck.2.8.0-beta.2203-10.gbl.js → ai.clck.2.8.0-beta.2203-13.gbl.js} +688 -514
  6. package/browser/ai.clck.2.8.0-beta.2203-13.gbl.js.map +1 -0
  7. package/browser/ai.clck.2.8.0-beta.2203-13.gbl.min.js +6 -0
  8. package/browser/ai.clck.2.8.0-beta.2203-13.gbl.min.js.map +1 -0
  9. package/browser/ai.clck.2.8.0-beta.2203-13.integrity.json +66 -0
  10. package/browser/{ai.clck.2.8.0-beta.2203-10.js → ai.clck.2.8.0-beta.2203-13.js} +688 -514
  11. package/browser/ai.clck.2.8.0-beta.2203-13.js.map +1 -0
  12. package/browser/ai.clck.2.8.0-beta.2203-13.min.js +6 -0
  13. package/browser/ai.clck.2.8.0-beta.2203-13.min.js.map +1 -0
  14. package/browser/ai.clck.2.cjs.js +687 -513
  15. package/browser/ai.clck.2.cjs.js.map +1 -1
  16. package/browser/ai.clck.2.cjs.min.js +2 -2
  17. package/browser/ai.clck.2.cjs.min.js.map +1 -1
  18. package/browser/ai.clck.2.gbl.js +687 -513
  19. package/browser/ai.clck.2.gbl.js.map +1 -1
  20. package/browser/ai.clck.2.gbl.min.js +2 -2
  21. package/browser/ai.clck.2.gbl.min.js.map +1 -1
  22. package/browser/ai.clck.2.js +687 -513
  23. package/browser/ai.clck.2.js.map +1 -1
  24. package/browser/ai.clck.2.min.js +2 -2
  25. package/browser/ai.clck.2.min.js.map +1 -1
  26. package/dist/applicationinsights-clickanalytics-js.api.json +15 -1
  27. package/dist/applicationinsights-clickanalytics-js.api.md +1 -0
  28. package/dist/applicationinsights-clickanalytics-js.d.ts +2 -5
  29. package/dist/applicationinsights-clickanalytics-js.js +687 -513
  30. package/dist/applicationinsights-clickanalytics-js.js.map +1 -1
  31. package/dist/applicationinsights-clickanalytics-js.min.js +2 -2
  32. package/dist/applicationinsights-clickanalytics-js.min.js.map +1 -1
  33. package/dist/applicationinsights-clickanalytics-js.rollup.d.ts +2 -5
  34. package/dist-esm/Behaviours.js +1 -1
  35. package/dist-esm/ClickAnalyticsPlugin.js +74 -50
  36. package/dist-esm/ClickAnalyticsPlugin.js.map +1 -1
  37. package/dist-esm/DataCollector.js +1 -1
  38. package/dist-esm/Enums.js +1 -1
  39. package/dist-esm/Interfaces/Datamodel.js +1 -1
  40. package/dist-esm/applicationinsights-clickanalytics-js.js +1 -1
  41. package/dist-esm/common/Utils.js +1 -1
  42. package/dist-esm/events/PageAction.js +128 -128
  43. package/dist-esm/events/PageAction.js.map +1 -1
  44. package/dist-esm/events/WebEvent.js +109 -94
  45. package/dist-esm/events/WebEvent.js.map +1 -1
  46. package/dist-esm/handlers/AutoCaptureHandler.js +85 -91
  47. package/dist-esm/handlers/AutoCaptureHandler.js.map +1 -1
  48. package/dist-esm/handlers/DomContentHandler.js +279 -280
  49. package/dist-esm/handlers/DomContentHandler.js.map +1 -1
  50. package/package.json +5 -5
  51. package/src/ClickAnalyticsPlugin.ts +91 -46
  52. package/src/Interfaces/Datamodel.ts +17 -18
  53. package/src/events/PageAction.ts +165 -134
  54. package/src/events/WebEvent.ts +147 -77
  55. package/src/handlers/AutoCaptureHandler.ts +88 -86
  56. package/src/handlers/DomContentHandler.ts +336 -310
  57. package/types/ClickAnalyticsPlugin.d.ts +1 -4
  58. package/types/Interfaces/Datamodel.d.ts +7 -6
  59. package/types/events/PageAction.d.ts +6 -6
  60. package/types/events/WebEvent.d.ts +17 -17
  61. package/types/handlers/AutoCaptureHandler.d.ts +2 -10
  62. package/types/handlers/DomContentHandler.d.ts +3 -50
  63. package/types/tsdoc-metadata.json +1 -1
  64. package/browser/ai.clck.2.8.0-beta.2203-10.cjs.js.map +0 -1
  65. package/browser/ai.clck.2.8.0-beta.2203-10.cjs.min.js +0 -6
  66. package/browser/ai.clck.2.8.0-beta.2203-10.cjs.min.js.map +0 -1
  67. package/browser/ai.clck.2.8.0-beta.2203-10.gbl.js.map +0 -1
  68. package/browser/ai.clck.2.8.0-beta.2203-10.gbl.min.js +0 -6
  69. package/browser/ai.clck.2.8.0-beta.2203-10.gbl.min.js.map +0 -1
  70. package/browser/ai.clck.2.8.0-beta.2203-10.integrity.json +0 -66
  71. package/browser/ai.clck.2.8.0-beta.2203-10.js.map +0 -1
  72. package/browser/ai.clck.2.8.0-beta.2203-10.min.js +0 -6
  73. package/browser/ai.clck.2.8.0-beta.2203-10.min.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Application Insights JavaScript SDK - Click Analytics, 2.8.0-beta.2203-10
2
+ * Application Insights JavaScript SDK - Click Analytics, 2.8.0-beta.2203-13
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
  'use strict';
@@ -346,11 +346,23 @@ var strUpdate = "update";
346
346
  var strDisabled = "disabled";
347
347
  var strDoTeardown = "_doTeardown";
348
348
 
349
+ var strToISOString = "toISOString";
350
+ var cStrEndsWith = "endsWith";
351
+ var cStrStartsWith = "startsWith";
352
+ var cStrTrim = "trim";
349
353
  var strToString = "toString";
350
354
  var str__Proto = "__proto__";
351
355
  var strConstructor = "constructor";
352
356
  var _objDefineProperty$1 = ObjDefineProperty;
353
357
  var _objFreeze = ObjClass.freeze;
358
+ ObjClass.seal;
359
+ var _objKeys = ObjClass.keys;
360
+ var StringProto = String[strShimPrototype];
361
+ StringProto[cStrTrim];
362
+ StringProto[cStrEndsWith];
363
+ StringProto[cStrStartsWith];
364
+ var DateProto = Date[strShimPrototype];
365
+ DateProto[strToISOString];
354
366
  var _isArray = Array.isArray;
355
367
  var _objToString = ObjProto[strToString];
356
368
  var _fnToString = ObjHasOwnProperty[strToString];
@@ -457,6 +469,40 @@ function arrForEach(arr, callbackfn, thisArg) {
457
469
  catch (e) {
458
470
  }
459
471
  }
472
+ var _objKeysHasDontEnumBug = !({ toString: null }).propertyIsEnumerable("toString");
473
+ var _objKeysDontEnums = [
474
+ "toString",
475
+ "toLocaleString",
476
+ "valueOf",
477
+ "hasOwnProperty",
478
+ "isPrototypeOf",
479
+ "propertyIsEnumerable",
480
+ "constructor"
481
+ ];
482
+ function objKeys(obj) {
483
+ var objType = typeof obj;
484
+ if (objType !== strShimFunction && (objType !== strShimObject || obj === null)) {
485
+ throwTypeError("objKeys called on non-object");
486
+ }
487
+ if (!_objKeysHasDontEnumBug && _objKeys) {
488
+ return _objKeys(obj);
489
+ }
490
+ var result = [];
491
+ for (var prop in obj) {
492
+ if (obj && ObjHasOwnProperty.call(obj, prop)) {
493
+ result.push(prop);
494
+ }
495
+ }
496
+ if (_objKeysHasDontEnumBug) {
497
+ var dontEnumsLength = _objKeysDontEnums.length;
498
+ for (var lp = 0; lp < dontEnumsLength; lp++) {
499
+ if (obj && ObjHasOwnProperty.call(obj, _objKeysDontEnums[lp])) {
500
+ result.push(_objKeysDontEnums[lp]);
501
+ }
502
+ }
503
+ }
504
+ return result;
505
+ }
460
506
  function objDefineAccessors(target, prop, getProp, setProp) {
461
507
  if (_objDefineProperty$1) {
462
508
  try {
@@ -1050,7 +1096,7 @@ function newId(maxLength) {
1050
1096
  }
1051
1097
 
1052
1098
  var _objDefineProperty = ObjDefineProperty;
1053
- var version = "2.7.3";
1099
+ var version = "2.8.0-beta.2203-13";
1054
1100
  var instanceName = "." + newId(6);
1055
1101
  var _dataUid = 0;
1056
1102
  function _createAccessor(target, prop, value) {
@@ -1121,10 +1167,28 @@ function createElmNodeData(name) {
1121
1167
  return data;
1122
1168
  }
1123
1169
 
1170
+ var strDoUnload = "_doUnload";
1124
1171
  var pluginStateData = createElmNodeData("plugin");
1125
1172
  function _getPluginState(plugin) {
1126
1173
  return pluginStateData.get(plugin, "state", {}, true);
1127
1174
  }
1175
+ function unloadComponents(components, unloadCtx, unloadState, asyncCallback) {
1176
+ var idx = 0;
1177
+ function _doUnload() {
1178
+ while (idx < components.length) {
1179
+ var component = components[idx++];
1180
+ if (component) {
1181
+ var func = component[strDoUnload] || component[strDoTeardown];
1182
+ if (isFunction(func)) {
1183
+ if (func.call(component, unloadCtx, unloadState, _doUnload) === true) {
1184
+ return true;
1185
+ }
1186
+ }
1187
+ }
1188
+ }
1189
+ }
1190
+ return _doUnload();
1191
+ }
1128
1192
 
1129
1193
  var strTelemetryPluginChain = "TelemetryPluginChain";
1130
1194
  var strHasRunFlags = "_hasRun";
@@ -1645,6 +1709,8 @@ var BaseTelemetryPlugin = /** @class */ (function () {
1645
1709
  var strOnPrefix = "on";
1646
1710
  var strAttachEvent = "attachEvent";
1647
1711
  var strAddEventHelper = "addEventListener";
1712
+ var strDetachEvent = "detachEvent";
1713
+ var strRemoveEventListener = "removeEventListener";
1648
1714
  var strEvents = "events";
1649
1715
  createUniqueNamespace("aiEvtPageHide");
1650
1716
  createUniqueNamespace("aiEvtPageShow");
@@ -1684,7 +1750,7 @@ function _getEvtNamespace(eventName, evtNamespace) {
1684
1750
  eventName = (eventName || "") + theNamespace_1;
1685
1751
  }
1686
1752
  }
1687
- var parsedEvent = (eventNamespace.exec(eventName) || []);
1753
+ var parsedEvent = (eventNamespace.exec(eventName || "") || []);
1688
1754
  return {
1689
1755
  type: parsedEvent[1],
1690
1756
  ns: ((parsedEvent[2] || "").replace(rRemoveEmptyNs, ".").replace(rRemoveTrailingEmptyNs, "").split(".").sort()).join(".")
@@ -1699,6 +1765,16 @@ function _getRegisteredEvents(target, evtName, addDefault) {
1699
1765
  }
1700
1766
  return registeredEvents;
1701
1767
  }
1768
+ function _doDetach(obj, evtName, handlerRef, useCapture) {
1769
+ if (obj && evtName && evtName.type) {
1770
+ if (obj[strRemoveEventListener]) {
1771
+ obj[strRemoveEventListener](evtName.type, handlerRef, useCapture);
1772
+ }
1773
+ else if (obj[strDetachEvent]) {
1774
+ obj[strDetachEvent](strOnPrefix + evtName.type, handlerRef);
1775
+ }
1776
+ }
1777
+ }
1702
1778
  function _doAttach(obj, evtName, handlerRef, useCapture) {
1703
1779
  var result = false;
1704
1780
  if (obj && evtName && evtName.type && handlerRef) {
@@ -1713,6 +1789,50 @@ function _doAttach(obj, evtName, handlerRef, useCapture) {
1713
1789
  }
1714
1790
  return result;
1715
1791
  }
1792
+ function _doUnregister(target, events, evtName, unRegFn) {
1793
+ var idx = events.length;
1794
+ while (idx--) {
1795
+ var theEvent = events[idx];
1796
+ if (theEvent) {
1797
+ if (!evtName.ns || evtName.ns === theEvent.evtName.ns) {
1798
+ if (!unRegFn || unRegFn(theEvent)) {
1799
+ _doDetach(target, theEvent.evtName, theEvent.handler, theEvent.capture);
1800
+ events.splice(idx, 1);
1801
+ }
1802
+ }
1803
+ }
1804
+ }
1805
+ }
1806
+ function _unregisterEvents(target, evtName, unRegFn) {
1807
+ if (evtName.type) {
1808
+ _doUnregister(target, _getRegisteredEvents(target, evtName.type), evtName, unRegFn);
1809
+ }
1810
+ else {
1811
+ var eventCache = elmNodeData.get(target, strEvents, {});
1812
+ objForEachKey(eventCache, function (evtType, events) {
1813
+ _doUnregister(target, events, evtName, unRegFn);
1814
+ });
1815
+ if (objKeys(eventCache).length === 0) {
1816
+ elmNodeData.kill(target, strEvents);
1817
+ }
1818
+ }
1819
+ }
1820
+ function mergeEvtNamespace(theNamespace, namespaces) {
1821
+ var newNamespaces;
1822
+ if (namespaces) {
1823
+ if (isArray(namespaces)) {
1824
+ newNamespaces = [theNamespace].concat(namespaces);
1825
+ }
1826
+ else {
1827
+ newNamespaces = [theNamespace, namespaces];
1828
+ }
1829
+ newNamespaces = (_getEvtNamespace("xx", newNamespaces).ns).split(".");
1830
+ }
1831
+ else {
1832
+ newNamespaces = theNamespace;
1833
+ }
1834
+ return newNamespaces;
1835
+ }
1716
1836
  function eventOn(target, eventName, handlerRef, evtNamespace, useCapture) {
1717
1837
  if (useCapture === void 0) { useCapture = false; }
1718
1838
  var result = false;
@@ -1735,9 +1855,26 @@ function eventOn(target, eventName, handlerRef, evtNamespace, useCapture) {
1735
1855
  }
1736
1856
  return result;
1737
1857
  }
1738
- function attachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {
1858
+ function eventOff(target, eventName, handlerRef, evtNamespace, useCapture) {
1739
1859
  if (useCapture === void 0) { useCapture = false; }
1740
- return eventOn(obj, eventNameWithoutOn, handlerRef, null, useCapture);
1860
+ if (target) {
1861
+ try {
1862
+ var evtName_1 = _getEvtNamespace(eventName, evtNamespace);
1863
+ var found_1 = false;
1864
+ _unregisterEvents(target, evtName_1, function (regEvent) {
1865
+ if ((evtName_1.ns && !handlerRef) || regEvent.handler === handlerRef) {
1866
+ found_1 = true;
1867
+ return true;
1868
+ }
1869
+ return false;
1870
+ });
1871
+ if (!found_1) {
1872
+ _doDetach(target, evtName_1, handlerRef, useCapture);
1873
+ }
1874
+ }
1875
+ catch (e) {
1876
+ }
1877
+ }
1741
1878
  }
1742
1879
 
1743
1880
  var LoggingSeverity = createEnumStyle({
@@ -2123,190 +2260,200 @@ function getUri(config, location) {
2123
2260
  }
2124
2261
 
2125
2262
  var WebEvent = /** @class */ (function () {
2126
- function WebEvent(_clickAnalyticsPlugin, _config, _contentHandler, _pageTagsCallback, _metaTags, _traceLogger) {
2127
- this._clickAnalyticsPlugin = _clickAnalyticsPlugin;
2128
- this._config = _config;
2129
- this._contentHandler = _contentHandler;
2130
- this._pageTagsCallback = _pageTagsCallback;
2131
- this._metaTags = _metaTags;
2132
- this._traceLogger = _traceLogger;
2133
- this._pageTags = {};
2134
- }
2135
- WebEvent.prototype.setBasicProperties = function (event, overrideValues) {
2136
- if (!isValueAssigned(event.name)) {
2137
- event.pageName = getPageName(this._config, overrideValues);
2138
- }
2139
- if (!isValueAssigned(event.uri) && hasWindow) {
2140
- event.uri = getUri(this._config, getLocation());
2141
- }
2142
- };
2143
- WebEvent.prototype.setCommonProperties = function (event, overrideValues) {
2144
- this.setBasicProperties(event, overrideValues);
2145
- this._setPageTags(event, overrideValues);
2146
- this._pageTypeMetaTag = this._getMetaData(this._metaTags, this._config.coreData, "pageType");
2147
- this._behaviorMetaTag = this._getMetaData(this._metaTags, this._config.coreData, "behavior");
2148
- if (isValueAssigned(overrideValues.pageType)) {
2149
- event.pageType = overrideValues.pageType;
2150
- }
2151
- if (isValueAssigned(this._pageTypeMetaTag) && !isValueAssigned(event.pageType)) {
2152
- event.pageType = this._pageTypeMetaTag;
2153
- }
2154
- };
2155
- WebEvent.prototype._setPageTags = function (event, overrideValues) {
2156
- if (this._pageTagsCallback) {
2157
- this._pageTags = extend(true, this._pageTags, this._pageTagsCallback());
2158
- }
2159
- if (isValueAssigned(overrideValues.pageTags)) {
2160
- this._pageTags = extend(true, this._pageTags, overrideValues.pageTags);
2161
- }
2162
- if (this._metaTags) {
2163
- this._pageTags.metaTags = {};
2164
- for (var metaTag in this._metaTags) {
2165
- if (metaTag != "behavior" && metaTag != "market" && metaTag != "pageType") {
2166
- this._pageTags.metaTags[metaTag] = this._metaTags[metaTag];
2263
+ function WebEvent(clickAnalyticsPlugin, config, contentHandler, pageTagsCallback, metaTags, traceLogger) {
2264
+ dynamicProto(WebEvent, this, function (_self) {
2265
+ _initDefaults();
2266
+ function _initDefaults() {
2267
+ _self._pageTags = {};
2268
+ _self._clickAnalyticsPlugin = clickAnalyticsPlugin;
2269
+ _self._config = config;
2270
+ _self._contentHandler = contentHandler;
2271
+ _self._pageTagsCallback = pageTagsCallback;
2272
+ _self._metaTags = metaTags;
2273
+ _self._traceLogger = traceLogger;
2274
+ }
2275
+ _self.setBasicProperties = function (event, overrideValues) {
2276
+ if (!isValueAssigned(event.name)) {
2277
+ event.pageName = getPageName(_self._config, overrideValues);
2278
+ }
2279
+ if (!isValueAssigned(event.uri) && hasWindow) {
2280
+ event.uri = getUri(_self._config, getLocation());
2281
+ }
2282
+ };
2283
+ _self.setCommonProperties = function (event, overrideValues) {
2284
+ _self.setBasicProperties(event, overrideValues);
2285
+ _self._setPageTags(event, overrideValues);
2286
+ _self._pageTypeMetaTag = _getMetaData(_self._metaTags, _self._config.coreData, "pageType");
2287
+ _self._behaviorMetaTag = _getMetaData(_self._metaTags, _self._config.coreData, "behavior");
2288
+ if (isValueAssigned(overrideValues.pageType)) {
2289
+ event.pageType = overrideValues.pageType;
2290
+ }
2291
+ if (isValueAssigned(_self._pageTypeMetaTag) && !isValueAssigned(event.pageType)) {
2292
+ event.pageType = _self._pageTypeMetaTag;
2293
+ }
2294
+ };
2295
+ _self._setPageTags = function (event, overrideValues) {
2296
+ if (_self._pageTagsCallback) {
2297
+ _self._pageTags = extend(true, _self._pageTags, _self._pageTagsCallback());
2298
+ }
2299
+ if (isValueAssigned(overrideValues.pageTags)) {
2300
+ _self._pageTags = extend(true, _self._pageTags, overrideValues.pageTags);
2301
+ }
2302
+ if (_self._metaTags) {
2303
+ _self._pageTags.metaTags = {};
2304
+ for (var metaTag in _self._metaTags) {
2305
+ if (metaTag != "behavior" && metaTag != "market" && metaTag != "pageType") {
2306
+ _self._pageTags.metaTags[metaTag] = _self._metaTags[metaTag];
2307
+ }
2308
+ }
2309
+ }
2310
+ event.properties = event.properties || {};
2311
+ event.properties["pageTags"] = _self._pageTags;
2312
+ };
2313
+ _self._getBehavior = function (overrideValues) {
2314
+ var behavior;
2315
+ if (overrideValues && isValueAssigned(overrideValues.behavior)) {
2316
+ behavior = overrideValues.behavior;
2317
+ }
2318
+ else if (isValueAssigned(_self._behaviorMetaTag)) {
2319
+ behavior = _self._behaviorMetaTag;
2320
+ }
2321
+ return _self._getValidBehavior(behavior);
2322
+ };
2323
+ _self._getValidBehavior = function (behavior) {
2324
+ return _self._config.behaviorValidator(behavior);
2325
+ };
2326
+ _self._doUnload = function (unloadCtx, unloadState, asyncCallback) {
2327
+ _initDefaults();
2328
+ };
2329
+ function _getMetaData(metaTags, coreData, metaTagName) {
2330
+ if (coreData && coreData[metaTagName]) {
2331
+ return coreData[metaTagName];
2332
+ }
2333
+ if (metaTags) {
2334
+ return metaTags[metaTagName];
2167
2335
  }
2336
+ return "";
2168
2337
  }
2169
- }
2170
- event.properties = event.properties || {};
2171
- event.properties["pageTags"] = this._pageTags;
2172
- };
2173
- WebEvent.prototype._getBehavior = function (overrideValues) {
2174
- var behavior;
2175
- if (overrideValues && isValueAssigned(overrideValues.behavior)) {
2176
- behavior = overrideValues.behavior;
2177
- }
2178
- else if (isValueAssigned(this._behaviorMetaTag)) {
2179
- behavior = this._behaviorMetaTag;
2180
- }
2181
- return this._getValidBehavior(behavior);
2182
- };
2183
- WebEvent.prototype._getValidBehavior = function (behavior) {
2184
- return this._config.behaviorValidator(behavior);
2185
- };
2186
- WebEvent.prototype._getMetaData = function (metaTags, coreData, metaTagName) {
2187
- if (coreData && coreData[metaTagName]) {
2188
- return coreData[metaTagName];
2189
- }
2190
- else if (metaTags) {
2191
- return metaTags[metaTagName];
2192
- }
2193
- return "";
2194
- };
2338
+ });
2339
+ }
2195
2340
  return WebEvent;
2196
2341
  }());
2197
2342
 
2198
2343
  var PageAction = /** @class */ (function (_super) {
2199
2344
  __extendsFn(PageAction, _super);
2200
- function PageAction() {
2201
- return _super !== null && _super.apply(this, arguments) || this;
2202
- }
2203
- PageAction.prototype.trackPageAction = function (pageActionEvent, properties) {
2204
- var _this = this;
2205
- var ext = {};
2206
- ext["web"] = {};
2207
- var event = {
2208
- name: "Microsoft.ApplicationInsights.{0}.Event",
2209
- baseType: "EventData",
2210
- ext: ext,
2211
- data: {},
2212
- baseData: {}
2213
- };
2214
- this._populateEventDataIfPresent(event.baseData, "name", pageActionEvent.name);
2215
- this._populateEventDataIfPresent(event.data, "baseTypeSource", "ClickEvent");
2216
- this._populateEventDataIfPresent(event.data, "uri", pageActionEvent.uri);
2217
- this._populateEventDataIfPresent(event.data, "pageType", pageActionEvent.pageType);
2218
- this._populateEventDataIfPresent(event.data, "properties", pageActionEvent.properties);
2219
- this._populateEventDataIfPresent(event.data, "actionType", pageActionEvent.actionType);
2220
- this._populateEventDataIfPresent(event.data, "behavior", pageActionEvent.behavior);
2221
- this._populateEventDataIfPresent(event.data, "clickCoordinates", pageActionEvent.clickCoordinates);
2222
- this._populateEventDataIfPresent(event.data, "content", pageActionEvent.content);
2223
- this._populateEventDataIfPresent(event.data, "targetUri", pageActionEvent.targetUri);
2224
- this._populateEventDataIfPresent(event.data, "timeToAction", pageActionEvent.timeToAction);
2225
- this._populateEventDataIfPresent(event.data, "refUri", pageActionEvent.refUri);
2226
- this._populateEventDataIfPresent(event.data, "pageName", pageActionEvent.pageName);
2227
- this._populateEventDataIfPresent(event.data, "parentId", pageActionEvent.parentId);
2228
- if (properties) {
2229
- objForEachKey(properties, function (property, value) {
2230
- if (!event.data[property]) {
2231
- _this._populateEventDataIfPresent(event.data, property, value);
2345
+ function PageAction(clickAnalyticsPlugin, config, contentHandler, pageTagsCallback, metaTags, traceLogger) {
2346
+ var _this = _super.call(this, clickAnalyticsPlugin, config, contentHandler, pageTagsCallback, metaTags, traceLogger) || this;
2347
+ dynamicProto(PageAction, _this, function (_self, _base) {
2348
+ _self.trackPageAction = function (pageActionEvent, properties) {
2349
+ var ext = {};
2350
+ ext["web"] = {};
2351
+ var event = {
2352
+ name: "Microsoft.ApplicationInsights.{0}.Event",
2353
+ baseType: "EventData",
2354
+ ext: ext,
2355
+ data: {},
2356
+ baseData: {}
2357
+ };
2358
+ _populateEventDataIfPresent(event.baseData, "name", pageActionEvent.name);
2359
+ _populateEventDataIfPresent(event.data, "baseTypeSource", "ClickEvent");
2360
+ _populateEventDataIfPresent(event.data, "uri", pageActionEvent.uri);
2361
+ _populateEventDataIfPresent(event.data, "pageType", pageActionEvent.pageType);
2362
+ _populateEventDataIfPresent(event.data, "properties", pageActionEvent.properties);
2363
+ _populateEventDataIfPresent(event.data, "actionType", pageActionEvent.actionType);
2364
+ _populateEventDataIfPresent(event.data, "behavior", pageActionEvent.behavior);
2365
+ _populateEventDataIfPresent(event.data, "clickCoordinates", pageActionEvent.clickCoordinates);
2366
+ _populateEventDataIfPresent(event.data, "content", pageActionEvent.content);
2367
+ _populateEventDataIfPresent(event.data, "targetUri", pageActionEvent.targetUri);
2368
+ _populateEventDataIfPresent(event.data, "timeToAction", pageActionEvent.timeToAction);
2369
+ _populateEventDataIfPresent(event.data, "refUri", pageActionEvent.refUri);
2370
+ _populateEventDataIfPresent(event.data, "pageName", pageActionEvent.pageName);
2371
+ _populateEventDataIfPresent(event.data, "parentId", pageActionEvent.parentId);
2372
+ if (properties) {
2373
+ objForEachKey(properties, function (property, value) {
2374
+ if (!event.data[property]) {
2375
+ _populateEventDataIfPresent(event.data, property, value);
2376
+ }
2377
+ });
2232
2378
  }
2233
- });
2234
- }
2235
- this._clickAnalyticsPlugin.core.track(event);
2236
- };
2237
- PageAction.prototype.capturePageAction = function (element, overrideValues, customProperties, isRightClick) {
2238
- overrideValues = !isValueAssigned(overrideValues) ? {} : overrideValues;
2239
- var pageActionEvent = { name: "" };
2240
- var pageActionProperties = isValueAssigned(customProperties) ? customProperties : {};
2241
- this.setCommonProperties(pageActionEvent, overrideValues);
2242
- pageActionEvent.behavior = this._getBehavior(overrideValues);
2243
- var elementContent = {};
2244
- if (isRightClick) {
2245
- pageActionEvent.behavior = this._config.defaultRightClickBhvr;
2246
- }
2247
- if (element) {
2248
- pageActionEvent.targetUri = getClickTarget(element);
2249
- elementContent = this._contentHandler.getElementContent(element);
2250
- if (elementContent.bhvr && !isValueAssigned(overrideValues.behavior)) {
2251
- var currentBehavior = extractFieldFromObject(elementContent, "bhvr");
2252
- pageActionEvent.behavior = this._getValidBehavior(currentBehavior);
2253
- }
2254
- if (!isValueAssigned(elementContent.id) && !isValueAssigned(elementContent.contentName)) {
2255
- this._traceLogger.throwInternal(LoggingSeverity.WARNING, _ExtendedInternalMessageId.InvalidContentBlob, "Missing attributes id or contentName in click event. Click event information will still be collected!");
2256
- }
2257
- }
2258
- pageActionEvent.name = elementContent.id || elementContent.contentName || strNotSpecified;
2259
- pageActionEvent.parentId = elementContent.parentid || elementContent.parentName || strNotSpecified;
2260
- if (isValueAssigned(overrideValues.actionType)) {
2261
- pageActionEvent.actionType = overrideValues.actionType;
2262
- }
2263
- if (isValueAssigned(overrideValues.clickCoordinateX) && isValueAssigned(overrideValues.clickCoordinateY)) {
2264
- pageActionEvent.clickCoordinates = overrideValues.clickCoordinateX + "X" + overrideValues.clickCoordinateY;
2265
- }
2266
- this._sanitizePageActionEventContent(elementContent);
2267
- pageActionEvent.content = bracketIt(JSON.stringify(extend(elementContent, overrideValues && overrideValues.contentTags ? overrideValues.contentTags : {})));
2268
- pageActionEvent.timeToAction = this._getTimeToClick();
2269
- pageActionEvent.refUri = isValueAssigned(overrideValues.refUri) ? overrideValues.refUri : this._config.coreData.referrerUri;
2270
- if (this._isUndefinedEvent(pageActionEvent)) {
2271
- return;
2272
- }
2273
- this.trackPageAction(pageActionEvent, pageActionProperties);
2274
- };
2275
- PageAction.prototype._getTimeToClick = function () {
2276
- var perf = getPerformance();
2277
- if (perf && perf.timing) {
2278
- var isNavigationStart = perf.timing.navigationStart;
2279
- if (isNavigationStart && isNavigationStart !== 0) {
2280
- return new Date().getTime() - isNavigationStart;
2379
+ _self._clickAnalyticsPlugin.core.track(event);
2380
+ };
2381
+ _self.capturePageAction = function (element, overrideValues, customProperties, isRightClick) {
2382
+ overrideValues = !isValueAssigned(overrideValues) ? {} : overrideValues;
2383
+ var pageActionEvent = { name: "" };
2384
+ var pageActionProperties = isValueAssigned(customProperties) ? customProperties : {};
2385
+ _self.setCommonProperties(pageActionEvent, overrideValues);
2386
+ pageActionEvent.behavior = _self._getBehavior(overrideValues);
2387
+ var elementContent = {};
2388
+ if (isRightClick) {
2389
+ pageActionEvent.behavior = _self._config.defaultRightClickBhvr;
2390
+ }
2391
+ if (element) {
2392
+ pageActionEvent.targetUri = getClickTarget(element);
2393
+ elementContent = _self._contentHandler.getElementContent(element);
2394
+ if (elementContent.bhvr && !isValueAssigned(overrideValues.behavior)) {
2395
+ var currentBehavior = extractFieldFromObject(elementContent, "bhvr");
2396
+ pageActionEvent.behavior = _self._getValidBehavior(currentBehavior);
2397
+ }
2398
+ if (!isValueAssigned(elementContent.id) && !isValueAssigned(elementContent.contentName)) {
2399
+ _self._traceLogger.throwInternal(LoggingSeverity.WARNING, _ExtendedInternalMessageId.InvalidContentBlob, "Missing attributes id or contentName in click event. Click event information will still be collected!");
2400
+ }
2401
+ }
2402
+ pageActionEvent.name = elementContent.id || elementContent.contentName || strNotSpecified;
2403
+ pageActionEvent.parentId = elementContent.parentid || elementContent.parentName || strNotSpecified;
2404
+ if (isValueAssigned(overrideValues.actionType)) {
2405
+ pageActionEvent.actionType = overrideValues.actionType;
2406
+ }
2407
+ if (isValueAssigned(overrideValues.clickCoordinateX) && isValueAssigned(overrideValues.clickCoordinateY)) {
2408
+ pageActionEvent.clickCoordinates = overrideValues.clickCoordinateX + "X" + overrideValues.clickCoordinateY;
2409
+ }
2410
+ _sanitizePageActionEventContent(elementContent);
2411
+ pageActionEvent.content = bracketIt(JSON.stringify(extend(elementContent, overrideValues && overrideValues.contentTags ? overrideValues.contentTags : {})));
2412
+ pageActionEvent.timeToAction = _getTimeToClick();
2413
+ pageActionEvent.refUri = isValueAssigned(overrideValues.refUri) ? overrideValues.refUri : _self._config.coreData.referrerUri;
2414
+ if (_isUndefinedEvent(pageActionEvent)) {
2415
+ return;
2416
+ }
2417
+ _self.trackPageAction(pageActionEvent, pageActionProperties);
2418
+ };
2419
+ function _getTimeToClick() {
2420
+ var perf = getPerformance();
2421
+ if (perf && perf.timing) {
2422
+ var isNavigationStart = perf.timing.navigationStart;
2423
+ if (isNavigationStart && isNavigationStart !== 0) {
2424
+ return new Date().getTime() - isNavigationStart;
2425
+ }
2426
+ }
2427
+ return -1;
2281
2428
  }
2282
- }
2283
- return -1;
2284
- };
2285
- PageAction.prototype._populateEventDataIfPresent = function (obj, property, value) {
2286
- if (isValueAssigned(value)) {
2287
- obj[property] = value;
2288
- }
2289
- };
2290
- PageAction.prototype._sanitizePageActionEventContent = function (pageActionContent) {
2291
- if (pageActionContent) {
2292
- delete pageActionContent.id;
2293
- delete pageActionContent.parentid;
2294
- delete pageActionContent.parentname;
2295
- if (this._config && this._config.dataTags && isValueAssigned(this._config.dataTags.parentDataTag)) {
2296
- delete pageActionContent[this._config.dataTags.parentDataTag];
2429
+ function _populateEventDataIfPresent(obj, property, value) {
2430
+ if (isValueAssigned(value)) {
2431
+ obj[property] = value;
2432
+ }
2297
2433
  }
2298
- }
2299
- };
2300
- PageAction.prototype._isUndefinedEvent = function (pageActionEvent) {
2301
- if (this._config.dropInvalidEvents) {
2302
- if (pageActionEvent.name === strNotSpecified
2303
- && pageActionEvent.parentId === strNotSpecified
2304
- && pageActionEvent.content === "[{}]") {
2305
- return true;
2434
+ function _sanitizePageActionEventContent(pageActionContent) {
2435
+ if (pageActionContent) {
2436
+ delete pageActionContent.id;
2437
+ delete pageActionContent.parentid;
2438
+ delete pageActionContent.parentname;
2439
+ if (_self._config && _self._config.dataTags && isValueAssigned(_self._config.dataTags.parentDataTag)) {
2440
+ delete pageActionContent[_self._config.dataTags.parentDataTag];
2441
+ }
2442
+ }
2306
2443
  }
2307
- }
2308
- return false;
2309
- };
2444
+ function _isUndefinedEvent(pageActionEvent) {
2445
+ if (_self._config.dropInvalidEvents) {
2446
+ if (pageActionEvent.name === strNotSpecified
2447
+ && pageActionEvent.parentId === strNotSpecified
2448
+ && pageActionEvent.content === "[{}]") {
2449
+ return true;
2450
+ }
2451
+ }
2452
+ return false;
2453
+ }
2454
+ });
2455
+ return _this;
2456
+ }
2310
2457
  return PageAction;
2311
2458
  }(WebEvent));
2312
2459
 
@@ -2329,85 +2476,83 @@ var AutoCaptureHandler = /** @class */ (function () {
2329
2476
  this._config = _config;
2330
2477
  this._pageAction = _pageAction;
2331
2478
  this._traceLogger = _traceLogger;
2332
- }
2333
- AutoCaptureHandler.prototype.click = function () {
2334
- var _this = this;
2335
- var win = getWindow();
2336
- var doc = getDocument();
2337
- if (win) {
2338
- var event_1 = (navigator.appVersion.indexOf("MSIE") !== -1) ? "click" : "mousedown";
2339
- attachEvent(win, event_1, function (evt) {
2340
- _this._processClick(evt);
2341
- });
2342
- attachEvent(win, "keyup", function (evt) {
2343
- _this._processClick(evt);
2344
- });
2345
- }
2346
- else if (doc) {
2347
- attachEvent(doc, "click", function (evt) {
2348
- _this._processClick(evt);
2349
- });
2350
- attachEvent(doc, "keyup", function (evt) {
2351
- _this._processClick(evt);
2352
- });
2353
- }
2354
- };
2355
- AutoCaptureHandler.prototype.capturePageAction = function (element, overrideValues, customProperties, isRightClick) {
2356
- var donotTrackTag = this._config.dataTags.customDataPrefix + this._config.dataTags.dntDataTag;
2357
- if (!isElementDnt(element, donotTrackTag)) {
2358
- this._pageAction.capturePageAction(element, overrideValues, customProperties, isRightClick);
2359
- }
2360
- };
2361
- AutoCaptureHandler.prototype._processClick = function (clickEvent) {
2362
- var clickCaptureElements = { A: true, BUTTON: true, AREA: true, INPUT: true };
2363
- var win = getWindow();
2364
- if (isNullOrUndefined(clickEvent) && win) {
2365
- clickEvent = win.event;
2366
- }
2367
- if (clickEvent) {
2368
- var element = clickEvent.srcElement || clickEvent.target;
2369
- var overrideValues = {
2370
- clickCoordinateX: clickEvent.pageX,
2371
- clickCoordinateY: clickEvent.pageY
2372
- };
2373
- var isRightClickObj = isRightClick(clickEvent);
2374
- if (isRightClickObj) {
2375
- overrideValues.actionType = ActionType.CLICKRIGHT;
2376
- }
2377
- else if (isLeftClick(clickEvent)) {
2378
- overrideValues.actionType = ActionType.CLICKLEFT;
2379
- }
2380
- else if (isKeyboardEnter(clickEvent)) {
2381
- overrideValues.actionType = ActionType.KEYBOARDENTER;
2382
- }
2383
- else if (isKeyboardSpace(clickEvent)) {
2384
- overrideValues.actionType = ActionType.KEYBOARDSPACE;
2385
- }
2386
- else if (isMiddleClick(clickEvent)) {
2387
- overrideValues.actionType = ActionType.CLICKMIDDLE;
2388
- }
2389
- else {
2390
- return;
2391
- }
2392
- while (element && element.tagName) {
2393
- if (element.control && clickCaptureElements[element.control.tagName.toUpperCase()]) {
2394
- element = element.control;
2395
- }
2396
- var tagNameUpperCased = element.tagName.toUpperCase();
2397
- if (!clickCaptureElements[tagNameUpperCased]) {
2398
- element = element.parentElement || element.parentNode;
2399
- continue;
2479
+ var _evtNamespace = mergeEvtNamespace(createUniqueNamespace("AutoCaptureHandler"), _analyticsPlugin._evtNamespace);
2480
+ dynamicProto(AutoCaptureHandler, this, function (_self) {
2481
+ _self.click = function () {
2482
+ var win = getWindow();
2483
+ var doc = getDocument();
2484
+ if (win) {
2485
+ var event_1 = (navigator.appVersion.indexOf("MSIE") !== -1) ? "click" : "mousedown";
2486
+ eventOn(win, event_1, _processClick, _evtNamespace);
2487
+ eventOn(win, "keyup", _processClick, _evtNamespace);
2488
+ }
2489
+ else if (doc) {
2490
+ eventOn(doc, "click", _processClick, _evtNamespace);
2491
+ eventOn(doc, "keyup", _processClick, _evtNamespace);
2400
2492
  }
2401
- else {
2402
- var sendEvent = tagNameUpperCased === "INPUT" ? clickCaptureInputTypes[element.type.toUpperCase()] : true;
2403
- if (sendEvent) {
2404
- this.capturePageAction(element, overrideValues, {}, isRightClickObj);
2493
+ };
2494
+ _self._doUnload = function (unloadCtx, unloadState, asyncCallback) {
2495
+ eventOff(getWindow(), null, null, _evtNamespace);
2496
+ eventOff(getDocument(), null, null, _evtNamespace);
2497
+ };
2498
+ function _capturePageAction(element, overrideValues, customProperties, isRightClick) {
2499
+ var donotTrackTag = _self._config.dataTags.customDataPrefix + _self._config.dataTags.dntDataTag;
2500
+ if (!isElementDnt(element, donotTrackTag)) {
2501
+ _self._pageAction.capturePageAction(element, overrideValues, customProperties, isRightClick);
2502
+ }
2503
+ }
2504
+ function _processClick(clickEvent) {
2505
+ var clickCaptureElements = { A: true, BUTTON: true, AREA: true, INPUT: true };
2506
+ var win = getWindow();
2507
+ if (isNullOrUndefined(clickEvent) && win) {
2508
+ clickEvent = win.event;
2509
+ }
2510
+ if (clickEvent) {
2511
+ var element = clickEvent.srcElement || clickEvent.target;
2512
+ var overrideValues = {
2513
+ clickCoordinateX: clickEvent.pageX,
2514
+ clickCoordinateY: clickEvent.pageY
2515
+ };
2516
+ var isRightClickObj = isRightClick(clickEvent);
2517
+ if (isRightClickObj) {
2518
+ overrideValues.actionType = ActionType.CLICKRIGHT;
2519
+ }
2520
+ else if (isLeftClick(clickEvent)) {
2521
+ overrideValues.actionType = ActionType.CLICKLEFT;
2522
+ }
2523
+ else if (isKeyboardEnter(clickEvent)) {
2524
+ overrideValues.actionType = ActionType.KEYBOARDENTER;
2525
+ }
2526
+ else if (isKeyboardSpace(clickEvent)) {
2527
+ overrideValues.actionType = ActionType.KEYBOARDSPACE;
2528
+ }
2529
+ else if (isMiddleClick(clickEvent)) {
2530
+ overrideValues.actionType = ActionType.CLICKMIDDLE;
2531
+ }
2532
+ else {
2533
+ return;
2534
+ }
2535
+ while (element && element.tagName) {
2536
+ if (element.control && clickCaptureElements[element.control.tagName.toUpperCase()]) {
2537
+ element = element.control;
2538
+ }
2539
+ var tagNameUpperCased = element.tagName.toUpperCase();
2540
+ if (!clickCaptureElements[tagNameUpperCased]) {
2541
+ element = element.parentElement || element.parentNode;
2542
+ continue;
2543
+ }
2544
+ else {
2545
+ var sendEvent = tagNameUpperCased === "INPUT" ? clickCaptureInputTypes[element.type.toUpperCase()] : true;
2546
+ if (sendEvent) {
2547
+ _capturePageAction(element, overrideValues, {}, isRightClickObj);
2548
+ }
2549
+ break;
2550
+ }
2405
2551
  }
2406
- break;
2407
2552
  }
2408
2553
  }
2409
- }
2410
- };
2554
+ });
2555
+ }
2411
2556
  return AutoCaptureHandler;
2412
2557
  }());
2413
2558
 
@@ -2416,289 +2561,318 @@ var DomContentHandler = /** @class */ (function () {
2416
2561
  function DomContentHandler(_config, _traceLogger) {
2417
2562
  this._config = _config;
2418
2563
  this._traceLogger = _traceLogger;
2419
- }
2420
- DomContentHandler.prototype.getMetadata = function () {
2421
- var metaTags = {};
2422
- if (hasDocument) {
2423
- metaTags = isValueAssigned(this._config.dataTags.metaDataPrefix) ? this._getMetaDataFromDOM(this._config.dataTags.captureAllMetaDataContent, this._config.dataTags.metaDataPrefix, false) :
2424
- this._getMetaDataFromDOM(this._config.dataTags.captureAllMetaDataContent, "", false);
2425
- }
2426
- return metaTags;
2427
- };
2428
- DomContentHandler.prototype.getElementContent = function (element) {
2429
- if (!element) {
2430
- return {};
2431
- }
2432
- var elementContent = {};
2433
- var biBlobValue;
2434
- var parentDataTagPrefix;
2435
- var dataTagPrefix = this._config.dataTags.customDataPrefix;
2436
- var aiBlobAttributeTag = dataTagPrefix + this._config.dataTags.aiBlobAttributeTag;
2437
- if (isValueAssigned(this._config.dataTags.parentDataTag)) {
2438
- parentDataTagPrefix = dataTagPrefix + this._config.dataTags.parentDataTag;
2439
- }
2440
- if (!this._isTracked(element, dataTagPrefix, aiBlobAttributeTag)) {
2441
- biBlobValue = element.getAttribute(aiBlobAttributeTag);
2442
- if (biBlobValue) {
2443
- try {
2444
- elementContent = JSON.parse(biBlobValue);
2564
+ dynamicProto(DomContentHandler, this, function (_self) {
2565
+ _self.getMetadata = function () {
2566
+ var dataTags = (_self._config || {}).dataTags;
2567
+ var metaTags = {};
2568
+ if (hasDocument) {
2569
+ metaTags = isValueAssigned(dataTags.metaDataPrefix) ? _getMetaDataFromDOM(dataTags.captureAllMetaDataContent, dataTags.metaDataPrefix, false) :
2570
+ _getMetaDataFromDOM(dataTags.captureAllMetaDataContent, "", false);
2571
+ }
2572
+ return metaTags;
2573
+ };
2574
+ _self.getElementContent = function (element) {
2575
+ if (!element) {
2576
+ return {};
2577
+ }
2578
+ var dataTags = (_self._config || {}).dataTags;
2579
+ var elementContent = {};
2580
+ var biBlobValue;
2581
+ var parentDataTagPrefix;
2582
+ var dataTagPrefix = dataTags.customDataPrefix;
2583
+ var aiBlobAttributeTag = dataTagPrefix + dataTags.aiBlobAttributeTag;
2584
+ if (isValueAssigned(dataTags.parentDataTag)) {
2585
+ parentDataTagPrefix = dataTagPrefix + dataTags.parentDataTag;
2586
+ }
2587
+ if (!_isTracked(element, dataTagPrefix, aiBlobAttributeTag)) {
2588
+ biBlobValue = element.getAttribute(aiBlobAttributeTag);
2589
+ if (biBlobValue) {
2590
+ try {
2591
+ elementContent = JSON.parse(biBlobValue);
2592
+ }
2593
+ catch (e) {
2594
+ _self._traceLogger.throwInternal(LoggingSeverity.CRITICAL, _ExtendedInternalMessageId.CannotParseAiBlobValue, "Can not parse " + biBlobValue);
2595
+ }
2596
+ }
2597
+ else {
2598
+ elementContent = extend(elementContent, _populateElementContent(element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag));
2599
+ }
2445
2600
  }
2446
- catch (e) {
2447
- this._traceLogger.throwInternal(LoggingSeverity.CRITICAL, _ExtendedInternalMessageId.CannotParseAiBlobValue, "Can not parse " + biBlobValue);
2601
+ else {
2602
+ elementContent = extend(elementContent, _populateElementContentwithDataTag(element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag));
2448
2603
  }
2449
- }
2450
- else {
2451
- elementContent = extend(elementContent, this._populateElementContent(element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag));
2452
- }
2453
- }
2454
- else {
2455
- elementContent = extend(elementContent, this._populateElementContentwithDataTag(element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag));
2456
- }
2457
- removeInvalidElements(elementContent);
2458
- if (parentDataTagPrefix) {
2459
- elementContent = extend(elementContent, this._getParentDetails(element, elementContent, dataTagPrefix, aiBlobAttributeTag));
2460
- }
2461
- return elementContent;
2462
- };
2463
- DomContentHandler.prototype._captureElementContentWithDataTag = function (contentElement, elementContent, dataTagPrefix) {
2464
- for (var i = 0, attrib; i < contentElement.attributes.length; i++) {
2465
- attrib = contentElement.attributes[i];
2466
- if (attrib.name.indexOf(dataTagPrefix) !== 0) {
2467
- continue;
2468
- }
2469
- var attribName = attrib.name.replace(dataTagPrefix, "");
2470
- elementContent[attribName] = attrib.value;
2471
- }
2472
- };
2473
- DomContentHandler.prototype._walkUpDomChainCaptureData = function (el, elementContent, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag) {
2474
- var element = el;
2475
- var parentDataTagFound = false;
2476
- var elementLevelFlag = false;
2477
- while (!isNullOrUndefined(element) && !isNullOrUndefined(element.attributes)) {
2478
- var attributes = element.attributes;
2479
- for (var i = 0; i < attributes.length; i++) {
2480
- var attrib = attributes[i];
2481
- if (attrib.name.indexOf(dataTagPrefix) !== 0) {
2482
- continue;
2483
- }
2484
- if (attrib.name.indexOf(parentDataTagPrefix) === 0) {
2485
- parentDataTagFound = true;
2486
- }
2487
- if (attrib.name.indexOf(aiBlobAttributeTag) === 0) {
2488
- continue;
2489
- }
2490
- var attribName = attrib.name.replace(dataTagPrefix, "");
2491
- if (elementLevelFlag && attribName === "id") {
2492
- continue;
2493
- }
2494
- if (!isValueAssigned(elementContent[attribName])) {
2604
+ removeInvalidElements(elementContent);
2605
+ if (parentDataTagPrefix) {
2606
+ elementContent = extend(elementContent, _getParentDetails(element, elementContent, dataTagPrefix, aiBlobAttributeTag));
2607
+ }
2608
+ return elementContent;
2609
+ };
2610
+ function _captureElementContentWithDataTag(contentElement, elementContent, dataTagPrefix) {
2611
+ for (var i = 0, attrib; i < contentElement.attributes.length; i++) {
2612
+ attrib = contentElement.attributes[i];
2613
+ if (attrib.name.indexOf(dataTagPrefix) !== 0) {
2614
+ continue;
2615
+ }
2616
+ var attribName = attrib.name.replace(dataTagPrefix, "");
2495
2617
  elementContent[attribName] = attrib.value;
2496
2618
  }
2497
2619
  }
2498
- if (parentDataTagFound) {
2499
- break;
2500
- }
2501
- elementLevelFlag = true;
2502
- element = element.parentNode;
2503
- }
2504
- };
2505
- DomContentHandler.prototype._populateElementContent = function (element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag) {
2506
- var elementContent = {};
2507
- if (!element) {
2508
- return elementContent;
2509
- }
2510
- var htmlContent = this._getHtmlIdAndContentName(element);
2511
- elementContent = {
2512
- id: htmlContent.id || "",
2513
- contentName: htmlContent.contentName || ""
2514
- };
2515
- if (isValueAssigned(parentDataTagPrefix)) {
2516
- this._walkUpDomChainCaptureData(element, elementContent, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag);
2517
- }
2518
- if (!elementContent.id && !elementContent.contentName) {
2519
- this._traceLogger.throwInternal(LoggingSeverity.WARNING, _ExtendedInternalMessageId.InvalidContentBlob, "Invalid content blob. Missing required attributes (id, contentName. " +
2520
- " Content information will still be collected!");
2521
- }
2522
- return elementContent;
2523
- };
2524
- DomContentHandler.prototype._populateElementContentwithDataTag = function (element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag) {
2525
- var elementContent = {};
2526
- if (!element) {
2527
- return elementContent;
2528
- }
2529
- var htmlContent = this._getHtmlIdAndContentName(element);
2530
- if (isValueAssigned(parentDataTagPrefix)) {
2531
- this._walkUpDomChainCaptureData(element, elementContent, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag);
2532
- }
2533
- else {
2534
- this._captureElementContentWithDataTag(element, elementContent, dataTagPrefix);
2535
- }
2536
- if (this._config.dataTags.useDefaultContentNameOrId) {
2537
- if (!isValueAssigned(elementContent.id)) {
2538
- elementContent.id = htmlContent.id || "";
2539
- }
2540
- elementContent.contentName = htmlContent.contentName || "";
2541
- }
2542
- if (!elementContent.id && !elementContent.contentName) {
2543
- this._traceLogger.throwInternal(LoggingSeverity.WARNING, _ExtendedInternalMessageId.InvalidContentBlob, "Invalid content blob. Missing required attributes (id, contentName. " +
2544
- " Content information will still be collected!");
2545
- }
2546
- return elementContent;
2547
- };
2548
- DomContentHandler.prototype._getMetaDataFromDOM = function (captureAllMetaDataContent, prefix, removePrefix) {
2549
- var metaElements;
2550
- var metaData = {};
2551
- if (hasDocument) {
2552
- metaElements = document.querySelectorAll("meta");
2553
- for (var i = 0; i < metaElements.length; i++) {
2554
- var meta = metaElements[i];
2555
- if (meta.name) {
2556
- if (captureAllMetaDataContent || meta.name.indexOf(prefix) === 0) {
2557
- var name_1 = removePrefix ? meta.name.replace(prefix, "") : meta.name;
2558
- metaData[name_1] = meta.content;
2620
+ function _walkUpDomChainCaptureData(el, elementContent, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag) {
2621
+ var element = el;
2622
+ var parentDataTagFound = false;
2623
+ var elementLevelFlag = false;
2624
+ while (!isNullOrUndefined(element) && !isNullOrUndefined(element.attributes)) {
2625
+ var attributes = element.attributes;
2626
+ for (var i = 0; i < attributes.length; i++) {
2627
+ var attrib = attributes[i];
2628
+ if (attrib.name.indexOf(dataTagPrefix) !== 0) {
2629
+ continue;
2630
+ }
2631
+ if (attrib.name.indexOf(parentDataTagPrefix) === 0) {
2632
+ parentDataTagFound = true;
2633
+ }
2634
+ if (attrib.name.indexOf(aiBlobAttributeTag) === 0) {
2635
+ continue;
2636
+ }
2637
+ var attribName = attrib.name.replace(dataTagPrefix, "");
2638
+ if (elementLevelFlag && attribName === "id") {
2639
+ continue;
2640
+ }
2641
+ if (!isValueAssigned(elementContent[attribName])) {
2642
+ elementContent[attribName] = attrib.value;
2643
+ }
2644
+ }
2645
+ if (parentDataTagFound) {
2646
+ break;
2559
2647
  }
2648
+ elementLevelFlag = true;
2649
+ element = element.parentNode;
2560
2650
  }
2561
2651
  }
2562
- }
2563
- return metaData;
2564
- };
2565
- DomContentHandler.prototype._getDefaultContentName = function (element, useDefaultContentName) {
2566
- if (useDefaultContentName === false || !element.tagName) {
2567
- return "";
2568
- }
2569
- var doc = getDocument() || {};
2570
- var contentName;
2571
- switch (element.tagName) {
2572
- case "A":
2573
- contentName = doc.all ? element.innerText || element.innerHTML : element.text || element.innerHTML;
2574
- break;
2575
- case "IMG":
2576
- case "AREA":
2577
- contentName = element.alt;
2578
- break;
2579
- default:
2580
- contentName = element.value || element.name || element.alt || element.innerText || element.id;
2581
- }
2582
- return contentName.substring(0, MAX_CONTENTNAME_LENGTH);
2583
- };
2584
- DomContentHandler.prototype._isTracked = function (element, dataTag, aiBlobAttributeTag) {
2585
- var attrs = element.attributes;
2586
- var dataTagFound = false;
2587
- for (var i = 0; i < attrs.length; i++) {
2588
- var attributeName = attrs[i].name;
2589
- if (attributeName === aiBlobAttributeTag) {
2590
- return false;
2591
- }
2592
- else if (attributeName.indexOf(dataTag) === 0) {
2593
- dataTagFound = true;
2594
- }
2595
- }
2596
- return dataTagFound;
2597
- };
2598
- DomContentHandler.prototype._getHtmlIdAndContentName = function (element) {
2599
- var htmlContent = {};
2600
- if (!element) {
2601
- return htmlContent;
2602
- }
2603
- if (this._config.dataTags.useDefaultContentNameOrId) {
2604
- var customizedContentName = this._config.callback.contentName ? this._config.callback.contentName(element, this._config.dataTags.useDefaultContentNameOrId) : "";
2605
- var defaultContentName = this._getDefaultContentName(element, this._config.dataTags.useDefaultContentNameOrId);
2606
- htmlContent = {
2607
- id: element.id,
2608
- contentName: customizedContentName || defaultContentName || element.getAttribute("alt")
2609
- };
2610
- }
2611
- return htmlContent;
2612
- };
2613
- DomContentHandler.prototype._getParentDetails = function (element, elementContent, dataTagPrefix, aiBlobAttributeTag) {
2614
- var parentId = elementContent["parentid"];
2615
- var parentName = elementContent["parentname"];
2616
- var parentInfo = {};
2617
- if (parentId || parentName || !element) {
2618
- return parentInfo;
2619
- }
2620
- return this._populateParentInfo(element, dataTagPrefix, aiBlobAttributeTag);
2621
- };
2622
- DomContentHandler.prototype._populateParentInfo = function (element, dataTagPrefix, aiBlobAttributeTag) {
2623
- var parentInfo = {};
2624
- var parentId;
2625
- var closestParentElement = walkUpDomChainWithElementValidation(element.parentElement, this._isTracked, dataTagPrefix);
2626
- if (closestParentElement) {
2627
- var dataAttr = closestParentElement.getAttribute(aiBlobAttributeTag) || element[aiBlobAttributeTag];
2628
- if (dataAttr) {
2629
- try {
2630
- var telemetryObject = JSON.parse(dataAttr);
2652
+ function _populateElementContent(element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag) {
2653
+ var elementContent = {};
2654
+ if (!element) {
2655
+ return elementContent;
2631
2656
  }
2632
- catch (e) {
2633
- this._traceLogger.throwInternal(LoggingSeverity.CRITICAL, _ExtendedInternalMessageId.CannotParseAiBlobValue, "Can not parse " + dataAttr);
2657
+ var htmlContent = _getHtmlIdAndContentName(element);
2658
+ elementContent = {
2659
+ id: htmlContent.id || "",
2660
+ contentName: htmlContent.contentName || ""
2661
+ };
2662
+ if (isValueAssigned(parentDataTagPrefix)) {
2663
+ _walkUpDomChainCaptureData(element, elementContent, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag);
2634
2664
  }
2635
- if (telemetryObject) {
2636
- parentId = telemetryObject.id;
2665
+ if (!elementContent.id && !elementContent.contentName) {
2666
+ _traceLogger.throwInternal(LoggingSeverity.WARNING, _ExtendedInternalMessageId.InvalidContentBlob, "Invalid content blob. Missing required attributes (id, contentName. " +
2667
+ " Content information will still be collected!");
2637
2668
  }
2669
+ return elementContent;
2638
2670
  }
2639
- else {
2640
- parentId = closestParentElement.getAttribute(dataTagPrefix + "id");
2671
+ function _populateElementContentwithDataTag(element, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag) {
2672
+ var dataTags = (_self._config || {}).dataTags;
2673
+ var elementContent = {};
2674
+ if (!element) {
2675
+ return elementContent;
2676
+ }
2677
+ var htmlContent = _getHtmlIdAndContentName(element);
2678
+ if (isValueAssigned(parentDataTagPrefix)) {
2679
+ _walkUpDomChainCaptureData(element, elementContent, dataTagPrefix, parentDataTagPrefix, aiBlobAttributeTag);
2680
+ }
2681
+ else {
2682
+ _captureElementContentWithDataTag(element, elementContent, dataTagPrefix);
2683
+ }
2684
+ if (dataTags.useDefaultContentNameOrId) {
2685
+ if (!isValueAssigned(elementContent.id)) {
2686
+ elementContent.id = htmlContent.id || "";
2687
+ }
2688
+ elementContent.contentName = htmlContent.contentName || "";
2689
+ }
2690
+ if (!elementContent.id && !elementContent.contentName) {
2691
+ _traceLogger.throwInternal(LoggingSeverity.WARNING, _ExtendedInternalMessageId.InvalidContentBlob, "Invalid content blob. Missing required attributes (id, contentName. " +
2692
+ " Content information will still be collected!");
2693
+ }
2694
+ return elementContent;
2695
+ }
2696
+ function _getMetaDataFromDOM(captureAllMetaDataContent, prefix, removePrefix) {
2697
+ var metaElements;
2698
+ var metaData = {};
2699
+ if (hasDocument) {
2700
+ metaElements = document.querySelectorAll("meta");
2701
+ for (var i = 0; i < metaElements.length; i++) {
2702
+ var meta = metaElements[i];
2703
+ if (meta.name) {
2704
+ if (captureAllMetaDataContent || meta.name.indexOf(prefix) === 0) {
2705
+ var name_1 = removePrefix ? meta.name.replace(prefix, "") : meta.name;
2706
+ metaData[name_1] = meta.content;
2707
+ }
2708
+ }
2709
+ }
2710
+ }
2711
+ return metaData;
2712
+ }
2713
+ function _getDefaultContentName(element, useDefaultContentName) {
2714
+ if (useDefaultContentName === false || !element.tagName) {
2715
+ return "";
2716
+ }
2717
+ var doc = getDocument() || {};
2718
+ var contentName;
2719
+ switch (element.tagName) {
2720
+ case "A":
2721
+ contentName = doc.all ? element.innerText || element.innerHTML : element.text || element.innerHTML;
2722
+ break;
2723
+ case "IMG":
2724
+ case "AREA":
2725
+ contentName = element.alt;
2726
+ break;
2727
+ default:
2728
+ contentName = element.value || element.name || element.alt || element.innerText || element.id;
2729
+ }
2730
+ return contentName.substring(0, MAX_CONTENTNAME_LENGTH);
2731
+ }
2732
+ function _isTracked(element, dataTag, aiBlobAttributeTag) {
2733
+ var attrs = element.attributes;
2734
+ var dataTagFound = false;
2735
+ for (var i = 0; i < attrs.length; i++) {
2736
+ var attributeName = attrs[i].name;
2737
+ if (attributeName === aiBlobAttributeTag) {
2738
+ return false;
2739
+ }
2740
+ else if (attributeName.indexOf(dataTag) === 0) {
2741
+ dataTagFound = true;
2742
+ }
2743
+ }
2744
+ return dataTagFound;
2745
+ }
2746
+ function _getHtmlIdAndContentName(element) {
2747
+ var dataTags = (_self._config || {}).dataTags;
2748
+ var callback = (_self._config || {}).callback;
2749
+ var htmlContent = {};
2750
+ if (!element) {
2751
+ return htmlContent;
2752
+ }
2753
+ if (dataTags.useDefaultContentNameOrId) {
2754
+ var customizedContentName = callback.contentName ? callback.contentName(element, dataTags.useDefaultContentNameOrId) : "";
2755
+ var defaultContentName = _getDefaultContentName(element, dataTags.useDefaultContentNameOrId);
2756
+ htmlContent = {
2757
+ id: element.id,
2758
+ contentName: customizedContentName || defaultContentName || element.getAttribute("alt")
2759
+ };
2760
+ }
2761
+ return htmlContent;
2762
+ }
2763
+ function _getParentDetails(element, elementContent, dataTagPrefix, aiBlobAttributeTag) {
2764
+ var parentId = elementContent["parentid"];
2765
+ var parentName = elementContent["parentname"];
2766
+ var parentInfo = {};
2767
+ if (parentId || parentName || !element) {
2768
+ return parentInfo;
2769
+ }
2770
+ return _populateParentInfo(element, dataTagPrefix, aiBlobAttributeTag);
2771
+ }
2772
+ function _populateParentInfo(element, dataTagPrefix, aiBlobAttributeTag) {
2773
+ var parentInfo = {};
2774
+ var parentId;
2775
+ var closestParentElement = walkUpDomChainWithElementValidation(element.parentElement, _isTracked, dataTagPrefix);
2776
+ if (closestParentElement) {
2777
+ var dataAttr = closestParentElement.getAttribute(aiBlobAttributeTag) || element[aiBlobAttributeTag];
2778
+ if (dataAttr) {
2779
+ try {
2780
+ var telemetryObject = JSON.parse(dataAttr);
2781
+ }
2782
+ catch (e) {
2783
+ _traceLogger.throwInternal(LoggingSeverity.CRITICAL, _ExtendedInternalMessageId.CannotParseAiBlobValue, "Can not parse " + dataAttr);
2784
+ }
2785
+ if (telemetryObject) {
2786
+ parentId = telemetryObject.id;
2787
+ }
2788
+ }
2789
+ else {
2790
+ parentId = closestParentElement.getAttribute(dataTagPrefix + "id");
2791
+ }
2792
+ }
2793
+ if (parentId) {
2794
+ parentInfo["parentid"] = parentId;
2795
+ }
2796
+ else {
2797
+ var htmlContent = _getHtmlIdAndContentName(element.parentElement);
2798
+ parentInfo["parentid"] = htmlContent.id;
2799
+ parentInfo["parentname"] = htmlContent.contentName;
2800
+ }
2801
+ return parentInfo;
2641
2802
  }
2642
- }
2643
- if (parentId) {
2644
- parentInfo["parentid"] = parentId;
2645
- }
2646
- else {
2647
- var htmlContent = this._getHtmlIdAndContentName(element.parentElement);
2648
- parentInfo["parentid"] = htmlContent.id;
2649
- parentInfo["parentname"] = htmlContent.contentName;
2650
- }
2651
- return parentInfo;
2652
- };
2803
+ });
2804
+ }
2653
2805
  return DomContentHandler;
2654
2806
  }());
2655
2807
 
2656
2808
  var ClickAnalyticsPlugin = /** @class */ (function (_super) {
2657
2809
  __extendsFn(ClickAnalyticsPlugin, _super);
2658
2810
  function ClickAnalyticsPlugin() {
2659
- var _this = _super !== null && _super.apply(this, arguments) || this;
2811
+ var _this = _super.call(this) || this;
2660
2812
  _this.identifier = "ClickAnalyticsPlugin";
2661
2813
  _this.priority = 181;
2662
- return _this;
2663
- }
2664
- ClickAnalyticsPlugin.prototype.initialize = function (config, core, extensions, pluginChain) {
2665
- if (isNullOrUndefined(core)) {
2666
- throw Error("Error initializing");
2667
- }
2668
- config.extensionConfig = config.extensionConfig || [];
2669
- config.extensionConfig[this.identifier] = config.extensionConfig[this.identifier] || {};
2670
- this._config = mergeConfig(config.extensionConfig[this.identifier]);
2671
- _super.prototype.initialize.call(this, config, core, extensions, pluginChain);
2672
- this._contentHandler = this._contentHandler ? this._contentHandler : new DomContentHandler(this._config, this.diagLog());
2673
- var metaTags = this._contentHandler.getMetadata();
2674
- this.pageAction = new PageAction(this, this._config, this._contentHandler, this._config.callback.pageActionPageTags, metaTags, this.diagLog());
2675
- this._autoCaptureHandler = this._autoCaptureHandler ? this._autoCaptureHandler : new AutoCaptureHandler(this, this._config, this.pageAction, this.diagLog());
2676
- if (this._config.autoCapture) {
2677
- this._autoCaptureHandler.click();
2678
- }
2679
- var _propertiesExtension;
2680
- arrForEach(extensions, function (extension) {
2681
- if (extension.identifier === PropertiesPluginIdentifier) {
2682
- _propertiesExtension = extension;
2683
- }
2814
+ var _config;
2815
+ var _pageAction;
2816
+ var _autoCaptureHandler;
2817
+ var _contentHandler;
2818
+ dynamicProto(ClickAnalyticsPlugin, _this, function (_self, _base) {
2819
+ var _identifier = _self.identifier;
2820
+ _initDefaults();
2821
+ _self.initialize = function (config, core, extensions, pluginChain) {
2822
+ if (isNullOrUndefined(core)) {
2823
+ throwError("Error initializing");
2824
+ }
2825
+ config.extensionConfig = config.extensionConfig || [];
2826
+ config.extensionConfig[_identifier] = config.extensionConfig[_identifier] || {};
2827
+ _config = mergeConfig(config.extensionConfig[_identifier]);
2828
+ _super.prototype.initialize.call(_this, config, core, extensions, pluginChain);
2829
+ var logger = _self.diagLog();
2830
+ _contentHandler = _contentHandler ? _contentHandler : new DomContentHandler(_config, logger);
2831
+ var metaTags = _contentHandler.getMetadata();
2832
+ _pageAction = new PageAction(_this, _config, _contentHandler, _config.callback.pageActionPageTags, metaTags, logger);
2833
+ _autoCaptureHandler = _autoCaptureHandler ? _autoCaptureHandler : new AutoCaptureHandler(_self, _config, _pageAction, logger);
2834
+ if (_config.autoCapture) {
2835
+ _autoCaptureHandler.click();
2836
+ }
2837
+ var _propertiesExtension;
2838
+ arrForEach(extensions, function (extension) {
2839
+ if (extension.identifier === PropertiesPluginIdentifier) {
2840
+ _propertiesExtension = extension;
2841
+ }
2842
+ });
2843
+ if (_propertiesExtension && _propertiesExtension.context &&
2844
+ _propertiesExtension.context.internal && _propertiesExtension.context.internal.sdkVersion) {
2845
+ _propertiesExtension.context.internal.sdkVersion += "_ClickPlugin" + ClickAnalyticsPlugin.Version;
2846
+ }
2847
+ };
2848
+ _self.processTelemetry = function (env, itemCtx) {
2849
+ _self.processNext(env, itemCtx);
2850
+ };
2851
+ _self.trackPageAction = function (pageAction, customProperties) {
2852
+ try {
2853
+ _pageAction.trackPageAction(pageAction, customProperties);
2854
+ }
2855
+ catch (e) {
2856
+ _throwInternal(_self.diagLog(), LoggingSeverity.CRITICAL, _ExtendedInternalMessageId.TrackPageActionEventFailed, "trackPageAction failed, page action event will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
2857
+ }
2858
+ };
2859
+ _self._doTeardown = function (unloadCtx, unloadState, asyncCallback) {
2860
+ return unloadComponents([
2861
+ _autoCaptureHandler,
2862
+ _contentHandler,
2863
+ _pageAction
2864
+ ], unloadCtx, unloadState);
2865
+ };
2684
2866
  });
2685
- if (_propertiesExtension && _propertiesExtension.context &&
2686
- _propertiesExtension.context.internal && _propertiesExtension.context.internal.sdkVersion) {
2687
- _propertiesExtension.context.internal.sdkVersion += "_ClickPlugin" + ClickAnalyticsPlugin.Version;
2688
- }
2689
- };
2690
- ClickAnalyticsPlugin.prototype.processTelemetry = function (env, itemCtx) {
2691
- this.processNext(env, itemCtx);
2692
- };
2693
- ClickAnalyticsPlugin.prototype.trackPageAction = function (pageAction, customProperties) {
2694
- try {
2695
- this.pageAction.trackPageAction(pageAction, customProperties);
2696
- }
2697
- catch (e) {
2698
- this.diagLog().throwInternal(LoggingSeverity.CRITICAL, _ExtendedInternalMessageId.TrackPageActionEventFailed, "trackPageAction failed, page action event will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
2867
+ function _initDefaults() {
2868
+ _config = null;
2869
+ _pageAction = null;
2870
+ _autoCaptureHandler = null;
2871
+ _contentHandler = null;
2699
2872
  }
2700
- };
2701
- ClickAnalyticsPlugin.Version = "2.8.0-beta.2203-10";
2873
+ return _this;
2874
+ }
2875
+ ClickAnalyticsPlugin.Version = "2.8.0-beta.2203-13";
2702
2876
  return ClickAnalyticsPlugin;
2703
2877
  }(BaseTelemetryPlugin));
2704
2878