@microsoft/applicationinsights-clickanalytics-js 2.8.0-beta.2203-10 → 2.8.0-beta.2203-11
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.
- package/browser/{ai.clck.2.8.0-beta.2203-10.cjs.js → ai.clck.2.8.0-beta.2203-11.cjs.js} +688 -514
- package/browser/ai.clck.2.8.0-beta.2203-11.cjs.js.map +1 -0
- package/browser/ai.clck.2.8.0-beta.2203-11.cjs.min.js +6 -0
- package/browser/ai.clck.2.8.0-beta.2203-11.cjs.min.js.map +1 -0
- package/browser/{ai.clck.2.8.0-beta.2203-10.gbl.js → ai.clck.2.8.0-beta.2203-11.gbl.js} +688 -514
- package/browser/ai.clck.2.8.0-beta.2203-11.gbl.js.map +1 -0
- package/browser/ai.clck.2.8.0-beta.2203-11.gbl.min.js +6 -0
- package/browser/ai.clck.2.8.0-beta.2203-11.gbl.min.js.map +1 -0
- package/browser/ai.clck.2.8.0-beta.2203-11.integrity.json +66 -0
- package/browser/{ai.clck.2.8.0-beta.2203-10.js → ai.clck.2.8.0-beta.2203-11.js} +688 -514
- package/browser/ai.clck.2.8.0-beta.2203-11.js.map +1 -0
- package/browser/ai.clck.2.8.0-beta.2203-11.min.js +6 -0
- package/browser/ai.clck.2.8.0-beta.2203-11.min.js.map +1 -0
- package/browser/ai.clck.2.cjs.js +687 -513
- package/browser/ai.clck.2.cjs.js.map +1 -1
- package/browser/ai.clck.2.cjs.min.js +2 -2
- package/browser/ai.clck.2.cjs.min.js.map +1 -1
- package/browser/ai.clck.2.gbl.js +687 -513
- package/browser/ai.clck.2.gbl.js.map +1 -1
- package/browser/ai.clck.2.gbl.min.js +2 -2
- package/browser/ai.clck.2.gbl.min.js.map +1 -1
- package/browser/ai.clck.2.js +687 -513
- package/browser/ai.clck.2.js.map +1 -1
- package/browser/ai.clck.2.min.js +2 -2
- package/browser/ai.clck.2.min.js.map +1 -1
- package/dist/applicationinsights-clickanalytics-js.api.json +15 -1
- package/dist/applicationinsights-clickanalytics-js.api.md +1 -0
- package/dist/applicationinsights-clickanalytics-js.d.ts +2 -5
- package/dist/applicationinsights-clickanalytics-js.js +687 -513
- package/dist/applicationinsights-clickanalytics-js.js.map +1 -1
- package/dist/applicationinsights-clickanalytics-js.min.js +2 -2
- package/dist/applicationinsights-clickanalytics-js.min.js.map +1 -1
- package/dist/applicationinsights-clickanalytics-js.rollup.d.ts +2 -5
- package/dist-esm/Behaviours.js +1 -1
- package/dist-esm/ClickAnalyticsPlugin.js +74 -50
- package/dist-esm/ClickAnalyticsPlugin.js.map +1 -1
- package/dist-esm/DataCollector.js +1 -1
- package/dist-esm/Enums.js +1 -1
- package/dist-esm/Interfaces/Datamodel.js +1 -1
- package/dist-esm/applicationinsights-clickanalytics-js.js +1 -1
- package/dist-esm/common/Utils.js +1 -1
- package/dist-esm/events/PageAction.js +128 -128
- package/dist-esm/events/PageAction.js.map +1 -1
- package/dist-esm/events/WebEvent.js +109 -94
- package/dist-esm/events/WebEvent.js.map +1 -1
- package/dist-esm/handlers/AutoCaptureHandler.js +85 -91
- package/dist-esm/handlers/AutoCaptureHandler.js.map +1 -1
- package/dist-esm/handlers/DomContentHandler.js +279 -280
- package/dist-esm/handlers/DomContentHandler.js.map +1 -1
- package/package.json +5 -5
- package/src/ClickAnalyticsPlugin.ts +91 -46
- package/src/Interfaces/Datamodel.ts +17 -18
- package/src/events/PageAction.ts +165 -134
- package/src/events/WebEvent.ts +147 -77
- package/src/handlers/AutoCaptureHandler.ts +88 -86
- package/src/handlers/DomContentHandler.ts +336 -310
- package/types/ClickAnalyticsPlugin.d.ts +1 -4
- package/types/Interfaces/Datamodel.d.ts +7 -6
- package/types/events/PageAction.d.ts +6 -6
- package/types/events/WebEvent.d.ts +17 -17
- package/types/handlers/AutoCaptureHandler.d.ts +2 -10
- package/types/handlers/DomContentHandler.d.ts +3 -50
- package/types/tsdoc-metadata.json +1 -1
- package/browser/ai.clck.2.8.0-beta.2203-10.cjs.js.map +0 -1
- package/browser/ai.clck.2.8.0-beta.2203-10.cjs.min.js +0 -6
- package/browser/ai.clck.2.8.0-beta.2203-10.cjs.min.js.map +0 -1
- package/browser/ai.clck.2.8.0-beta.2203-10.gbl.js.map +0 -1
- package/browser/ai.clck.2.8.0-beta.2203-10.gbl.min.js +0 -6
- package/browser/ai.clck.2.8.0-beta.2203-10.gbl.min.js.map +0 -1
- package/browser/ai.clck.2.8.0-beta.2203-10.integrity.json +0 -66
- package/browser/ai.clck.2.8.0-beta.2203-10.js.map +0 -1
- package/browser/ai.clck.2.8.0-beta.2203-10.min.js +0 -6
- package/browser/ai.clck.2.8.0-beta.2203-10.min.js.map +0 -1
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Application Insights JavaScript SDK - Click Analytics, 2.8.0-beta.2203-
|
|
2
|
+
* Application Insights JavaScript SDK - Click Analytics, 2.8.0-beta.2203-11
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
6
|
* @copyright Microsoft 2020
|
|
7
7
|
*/
|
|
8
|
+
import dynamicProto from "@microsoft/dynamicproto-js";
|
|
8
9
|
import { isValueAssigned, extend } from "../common/Utils";
|
|
9
10
|
import * as DataCollector from "../DataCollector";
|
|
10
11
|
import { getLocation, hasWindow } from "@microsoft/applicationinsights-core-js";
|
|
@@ -18,101 +19,115 @@ var WebEvent = /** @class */ (function () {
|
|
|
18
19
|
* @param metaTags - Meta tags
|
|
19
20
|
* @param traceLogger - Trace logger to log to console.
|
|
20
21
|
*/
|
|
21
|
-
function WebEvent(
|
|
22
|
-
this
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
this._pageTags = extend(true, this._pageTags, overrideValues.pageTags);
|
|
69
|
-
}
|
|
70
|
-
// If metadata is present add it to pageTags property
|
|
71
|
-
if (this._metaTags) {
|
|
72
|
-
this._pageTags.metaTags = {};
|
|
73
|
-
// Remove not supported meta data in pageTags.metaTags
|
|
74
|
-
for (var metaTag in this._metaTags) {
|
|
75
|
-
if (metaTag != "behavior" && metaTag != "market" && metaTag != "pageType") {
|
|
76
|
-
this._pageTags.metaTags[metaTag] = this._metaTags[metaTag];
|
|
22
|
+
function WebEvent(clickAnalyticsPlugin, config, contentHandler, pageTagsCallback, metaTags, traceLogger) {
|
|
23
|
+
dynamicProto(WebEvent, this, function (_self) {
|
|
24
|
+
_initDefaults();
|
|
25
|
+
function _initDefaults() {
|
|
26
|
+
_self._pageTags = {};
|
|
27
|
+
_self._clickAnalyticsPlugin = clickAnalyticsPlugin;
|
|
28
|
+
_self._config = config;
|
|
29
|
+
_self._contentHandler = contentHandler;
|
|
30
|
+
_self._pageTagsCallback = pageTagsCallback;
|
|
31
|
+
_self._metaTags = metaTags;
|
|
32
|
+
_self._traceLogger = traceLogger;
|
|
33
|
+
}
|
|
34
|
+
_self.setBasicProperties = function (event, overrideValues) {
|
|
35
|
+
if (!isValueAssigned(event.name)) {
|
|
36
|
+
event.pageName = DataCollector.getPageName(_self._config, overrideValues);
|
|
37
|
+
}
|
|
38
|
+
if (!isValueAssigned(event.uri) && hasWindow) {
|
|
39
|
+
event.uri = DataCollector.getUri(_self._config, getLocation());
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Sets common properties for events that are based on the WebEvent schema.
|
|
44
|
+
* @param event - The event
|
|
45
|
+
*/
|
|
46
|
+
_self.setCommonProperties = function (event, overrideValues) {
|
|
47
|
+
_self.setBasicProperties(event, overrideValues);
|
|
48
|
+
_self._setPageTags(event, overrideValues);
|
|
49
|
+
// extract specific meta tags out of the pageTags.metaTags collection. These will go into assigned first class fields in the event.
|
|
50
|
+
// the rest will go into pageTags.metaTags collection as is.
|
|
51
|
+
_self._pageTypeMetaTag = _getMetaData(_self._metaTags, _self._config.coreData, "pageType");
|
|
52
|
+
_self._behaviorMetaTag = _getMetaData(_self._metaTags, _self._config.coreData, "behavior");
|
|
53
|
+
if (isValueAssigned(overrideValues.pageType)) {
|
|
54
|
+
event.pageType = overrideValues.pageType;
|
|
55
|
+
}
|
|
56
|
+
// Only assign if not overriden and meta data is available
|
|
57
|
+
if (isValueAssigned(_self._pageTypeMetaTag) && !isValueAssigned(event.pageType)) {
|
|
58
|
+
event.pageType = _self._pageTypeMetaTag;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Sets pageTags.
|
|
63
|
+
* @param event - The event
|
|
64
|
+
*/
|
|
65
|
+
_self._setPageTags = function (event, overrideValues) {
|
|
66
|
+
// Prepare the pageTags object that is mostly the same for all events. Event specific pageTags will be added inside event constructors.
|
|
67
|
+
if (_self._pageTagsCallback) {
|
|
68
|
+
_self._pageTags = extend(true, _self._pageTags, _self._pageTagsCallback());
|
|
77
69
|
}
|
|
70
|
+
if (isValueAssigned(overrideValues.pageTags)) {
|
|
71
|
+
_self._pageTags = extend(true, _self._pageTags, overrideValues.pageTags);
|
|
72
|
+
}
|
|
73
|
+
// If metadata is present add it to pageTags property
|
|
74
|
+
if (_self._metaTags) {
|
|
75
|
+
_self._pageTags.metaTags = {};
|
|
76
|
+
// Remove not supported meta data in pageTags.metaTags
|
|
77
|
+
for (var metaTag in _self._metaTags) {
|
|
78
|
+
if (metaTag != "behavior" && metaTag != "market" && metaTag != "pageType") {
|
|
79
|
+
_self._pageTags.metaTags[metaTag] = _self._metaTags[metaTag];
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// All metadata tags that must be saved as properties have been extracted at this point. Assign pageTags as is.
|
|
84
|
+
event.properties = event.properties || {};
|
|
85
|
+
event.properties["pageTags"] = _self._pageTags;
|
|
86
|
+
};
|
|
87
|
+
_self._getBehavior = function (overrideValues) {
|
|
88
|
+
var behavior;
|
|
89
|
+
// If override specified
|
|
90
|
+
if (overrideValues && isValueAssigned(overrideValues.behavior)) {
|
|
91
|
+
behavior = overrideValues.behavior;
|
|
92
|
+
}
|
|
93
|
+
else if (isValueAssigned(_self._behaviorMetaTag)) {
|
|
94
|
+
// If behavior meta tag available
|
|
95
|
+
behavior = _self._behaviorMetaTag;
|
|
96
|
+
}
|
|
97
|
+
return _self._getValidBehavior(behavior);
|
|
98
|
+
};
|
|
99
|
+
_self._getValidBehavior = function (behavior) {
|
|
100
|
+
return _self._config.behaviorValidator(behavior);
|
|
101
|
+
};
|
|
102
|
+
_self._doUnload = function (unloadCtx, unloadState, asyncCallback) {
|
|
103
|
+
_initDefaults();
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* Get the specified metadata value from the collection
|
|
107
|
+
* If overrideValue is specified in the config that takes precedence.
|
|
108
|
+
* @param metaTags - Meta data.
|
|
109
|
+
* @param coreData - Coredata values from configuration.
|
|
110
|
+
* @param metaTagName - Name of the metaTag to get.
|
|
111
|
+
* @returns Meta data value
|
|
112
|
+
*/
|
|
113
|
+
function _getMetaData(metaTags, coreData, metaTagName) {
|
|
114
|
+
if (coreData && coreData[metaTagName]) {
|
|
115
|
+
return coreData[metaTagName];
|
|
116
|
+
}
|
|
117
|
+
if (metaTags) {
|
|
118
|
+
return metaTags[metaTagName];
|
|
119
|
+
}
|
|
120
|
+
return "";
|
|
78
121
|
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
behavior = overrideValues.behavior;
|
|
89
|
-
}
|
|
90
|
-
else if (isValueAssigned(this._behaviorMetaTag)) {
|
|
91
|
-
// If behavior meta tag available
|
|
92
|
-
behavior = this._behaviorMetaTag;
|
|
93
|
-
}
|
|
94
|
-
return this._getValidBehavior(behavior);
|
|
95
|
-
};
|
|
96
|
-
WebEvent.prototype._getValidBehavior = function (behavior) {
|
|
97
|
-
return this._config.behaviorValidator(behavior);
|
|
98
|
-
};
|
|
99
|
-
/**
|
|
100
|
-
* Get the specified metadata value from the collection
|
|
101
|
-
* If overrideValue is specified in the config that takes precedence.
|
|
102
|
-
* @param metaTags - Meta data.
|
|
103
|
-
* @param coreData - Coredata values from configuration.
|
|
104
|
-
* @param metaTagName - Name of the metaTag to get.
|
|
105
|
-
* @returns Meta data value
|
|
106
|
-
*/
|
|
107
|
-
WebEvent.prototype._getMetaData = function (metaTags, coreData, metaTagName) {
|
|
108
|
-
if (coreData && coreData[metaTagName]) {
|
|
109
|
-
return coreData[metaTagName];
|
|
110
|
-
}
|
|
111
|
-
else if (metaTags) {
|
|
112
|
-
return metaTags[metaTagName];
|
|
113
|
-
}
|
|
114
|
-
return "";
|
|
115
|
-
};
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
// Fill common PartB fields
|
|
125
|
+
// Removed Stub for WebEvent.prototype.setBasicProperties.
|
|
126
|
+
// Removed Stub for WebEvent.prototype.setCommonProperties.
|
|
127
|
+
// Removed Stub for WebEvent.prototype._doUnload.
|
|
128
|
+
// Removed Stub for WebEvent.prototype._setPageTags.
|
|
129
|
+
// Removed Stub for WebEvent.prototype._getBehavior.
|
|
130
|
+
// Removed Stub for WebEvent.prototype._getValidBehavior.
|
|
116
131
|
return WebEvent;
|
|
117
132
|
}());
|
|
118
133
|
export { WebEvent };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebEvent.js.map","sources":["WebEvent.js"],"sourcesContent":["/**\r\n * @copyright Microsoft 2020\r\n */\r\nimport { isValueAssigned, extend } from \"../common/Utils\";\r\nimport * as DataCollector from \"../DataCollector\";\r\nimport { getLocation, hasWindow } from \"@microsoft/applicationinsights-core-js\";\r\nvar WebEvent = /** @class */ (function () {\r\n /**\r\n * @param clickAnalyticsPlugin - Click Analytics plugin instance\r\n * @param config - ClickAnalytics configuration object\r\n * @param contentHandler - Content handler\r\n * @param id - Id object\r\n * @param pageTagsCallback - callback methods to get pageTags value\r\n * @param metaTags - Meta tags\r\n * @param traceLogger - Trace logger to log to console.\r\n */\r\n function WebEvent(
|
|
1
|
+
{"version":3,"file":"WebEvent.js.map","sources":["WebEvent.js"],"sourcesContent":["/**\r\n * @copyright Microsoft 2020\r\n */\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { isValueAssigned, extend } from \"../common/Utils\";\r\nimport * as DataCollector from \"../DataCollector\";\r\nimport { getLocation, hasWindow } from \"@microsoft/applicationinsights-core-js\";\r\nvar WebEvent = /** @class */ (function () {\r\n /**\r\n * @param clickAnalyticsPlugin - Click Analytics plugin instance\r\n * @param config - ClickAnalytics configuration object\r\n * @param contentHandler - Content handler\r\n * @param id - Id object\r\n * @param pageTagsCallback - callback methods to get pageTags value\r\n * @param metaTags - Meta tags\r\n * @param traceLogger - Trace logger to log to console.\r\n */\r\n function WebEvent(clickAnalyticsPlugin, config, contentHandler, pageTagsCallback, metaTags, traceLogger) {\r\n dynamicProto(WebEvent, this, function (_self) {\r\n _initDefaults();\r\n function _initDefaults() {\r\n _self._pageTags = {};\r\n _self._clickAnalyticsPlugin = clickAnalyticsPlugin;\r\n _self._config = config;\r\n _self._contentHandler = contentHandler;\r\n _self._pageTagsCallback = pageTagsCallback;\r\n _self._metaTags = metaTags;\r\n _self._traceLogger = traceLogger;\r\n }\r\n _self.setBasicProperties = function (event, overrideValues) {\r\n if (!isValueAssigned(event.name)) {\r\n event.pageName = DataCollector.getPageName(_self._config, overrideValues);\r\n }\r\n if (!isValueAssigned(event.uri) && hasWindow) {\r\n event.uri = DataCollector.getUri(_self._config, getLocation());\r\n }\r\n };\r\n /**\r\n * Sets common properties for events that are based on the WebEvent schema.\r\n * @param event - The event\r\n */\r\n _self.setCommonProperties = function (event, overrideValues) {\r\n _self.setBasicProperties(event, overrideValues);\r\n _self._setPageTags(event, overrideValues);\r\n // extract specific meta tags out of the pageTags.metaTags collection. These will go into assigned first class fields in the event.\r\n // the rest will go into pageTags.metaTags collection as is.\r\n _self._pageTypeMetaTag = _getMetaData(_self._metaTags, _self._config.coreData, \"pageType\");\r\n _self._behaviorMetaTag = _getMetaData(_self._metaTags, _self._config.coreData, \"behavior\");\r\n if (isValueAssigned(overrideValues.pageType)) {\r\n event.pageType = overrideValues.pageType;\r\n }\r\n // Only assign if not overriden and meta data is available\r\n if (isValueAssigned(_self._pageTypeMetaTag) && !isValueAssigned(event.pageType)) {\r\n event.pageType = _self._pageTypeMetaTag;\r\n }\r\n };\r\n /**\r\n * Sets pageTags.\r\n * @param event - The event\r\n */\r\n _self._setPageTags = function (event, overrideValues) {\r\n // Prepare the pageTags object that is mostly the same for all events. Event specific pageTags will be added inside event constructors.\r\n if (_self._pageTagsCallback) {\r\n _self._pageTags = extend(true, _self._pageTags, _self._pageTagsCallback());\r\n }\r\n if (isValueAssigned(overrideValues.pageTags)) {\r\n _self._pageTags = extend(true, _self._pageTags, overrideValues.pageTags);\r\n }\r\n // If metadata is present add it to pageTags property\r\n if (_self._metaTags) {\r\n _self._pageTags.metaTags = {};\r\n // Remove not supported meta data in pageTags.metaTags\r\n for (var metaTag in _self._metaTags) {\r\n if (metaTag != \"behavior\" && metaTag != \"market\" && metaTag != \"pageType\") {\r\n _self._pageTags.metaTags[metaTag] = _self._metaTags[metaTag];\r\n }\r\n }\r\n }\r\n // All metadata tags that must be saved as properties have been extracted at this point. Assign pageTags as is.\r\n event.properties = event.properties || {};\r\n event.properties[\"pageTags\"] = _self._pageTags;\r\n };\r\n _self._getBehavior = function (overrideValues) {\r\n var behavior;\r\n // If override specified\r\n if (overrideValues && isValueAssigned(overrideValues.behavior)) {\r\n behavior = overrideValues.behavior;\r\n }\r\n else if (isValueAssigned(_self._behaviorMetaTag)) {\r\n // If behavior meta tag available\r\n behavior = _self._behaviorMetaTag;\r\n }\r\n return _self._getValidBehavior(behavior);\r\n };\r\n _self._getValidBehavior = function (behavior) {\r\n return _self._config.behaviorValidator(behavior);\r\n };\r\n _self._doUnload = function (unloadCtx, unloadState, asyncCallback) {\r\n _initDefaults();\r\n };\r\n /**\r\n * Get the specified metadata value from the collection\r\n * If overrideValue is specified in the config that takes precedence.\r\n * @param metaTags - Meta data.\r\n * @param coreData - Coredata values from configuration.\r\n * @param metaTagName - Name of the metaTag to get.\r\n * @returns Meta data value\r\n */\r\n function _getMetaData(metaTags, coreData, metaTagName) {\r\n if (coreData && coreData[metaTagName]) {\r\n return coreData[metaTagName];\r\n }\r\n if (metaTags) {\r\n return metaTags[metaTagName];\r\n }\r\n return \"\";\r\n }\r\n });\r\n }\r\n // Fill common PartB fields\r\n WebEvent.prototype.setBasicProperties = function (event, overrideValues) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Sets common properties for events that are based on the WebEvent schema.\r\n * @param event - The event\r\n */\r\n WebEvent.prototype.setCommonProperties = function (event, overrideValues) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Teardown / Unload hook to allow implementations to perform some additional unload operations before the BaseTelemetryPlugin\r\n * finishes it's removal.\r\n * @param unloadCtx - This is the context that should be used during unloading.\r\n * @param unloadState - The details / state of the unload process, it holds details like whether it should be unloaded synchronously or asynchronously and the reason for the unload.\r\n * @param asyncCallback - An optional callback that the plugin must call if it returns true to inform the caller that it has completed any async unload/teardown operations.\r\n * @returns boolean - true if the plugin has or will call asyncCallback, this allows the plugin to perform any asynchronous operations.\r\n */\r\n WebEvent.prototype._doUnload = function (unloadCtx, unloadState, asyncCallback) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Sets pageTags.\r\n * @param event - The event\r\n */\r\n WebEvent.prototype._setPageTags = function (event, overrideValues) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n WebEvent.prototype._getBehavior = function (overrideValues) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n WebEvent.prototype._getValidBehavior = function (behavior) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n return WebEvent;\r\n}());\r\nexport { WebEvent };\r\n//# sourceMappingURL=WebEvent.js.map"],"names":[],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;yDAmCM;AACN;AACA;AACA;AACA"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Application Insights JavaScript SDK - Click Analytics, 2.8.0-beta.2203-
|
|
2
|
+
* Application Insights JavaScript SDK - Click Analytics, 2.8.0-beta.2203-11
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
6
|
* @copyright Microsoft 2020
|
|
7
7
|
*/
|
|
8
|
-
import
|
|
8
|
+
import dynamicProto from "@microsoft/dynamicproto-js";
|
|
9
|
+
import { getWindow, getDocument, isNullOrUndefined, mergeEvtNamespace, createUniqueNamespace, eventOn, eventOff } from "@microsoft/applicationinsights-core-js";
|
|
9
10
|
import { isRightClick, isLeftClick, isKeyboardEnter, isKeyboardSpace, isMiddleClick, isElementDnt } from "../common/Utils";
|
|
10
11
|
import { ActionType } from "../Enums";
|
|
11
12
|
var clickCaptureInputTypes = { BUTTON: true, CHECKBOX: true, RADIO: true, RESET: true, SUBMIT: true };
|
|
@@ -19,101 +20,94 @@ var AutoCaptureHandler = /** @class */ (function () {
|
|
|
19
20
|
this._config = _config;
|
|
20
21
|
this._pageAction = _pageAction;
|
|
21
22
|
this._traceLogger = _traceLogger;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
// IE8 and below doesn't have addEventListener so it will use attachEvent
|
|
40
|
-
// attaching to window does not work in IE8
|
|
41
|
-
attachEvent(doc, "click", function (evt) {
|
|
42
|
-
_this._processClick(evt);
|
|
43
|
-
});
|
|
44
|
-
attachEvent(doc, "keyup", function (evt) {
|
|
45
|
-
_this._processClick(evt);
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
/**
|
|
50
|
-
* API to create and send a populated PageAction event
|
|
51
|
-
* @param element - DOM element
|
|
52
|
-
* @param overrideValues - PageAction overrides
|
|
53
|
-
* @param customProperties - Custom properties(Part C)
|
|
54
|
-
* @param isRightClick - Flag for mouse right clicks
|
|
55
|
-
*/
|
|
56
|
-
AutoCaptureHandler.prototype.capturePageAction = function (element, overrideValues, customProperties, isRightClick) {
|
|
57
|
-
var donotTrackTag = this._config.dataTags.customDataPrefix + this._config.dataTags.dntDataTag;
|
|
58
|
-
if (!isElementDnt(element, donotTrackTag)) {
|
|
59
|
-
this._pageAction.capturePageAction(element, overrideValues, customProperties, isRightClick);
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
// Process click event
|
|
63
|
-
AutoCaptureHandler.prototype._processClick = function (clickEvent) {
|
|
64
|
-
var clickCaptureElements = { A: true, BUTTON: true, AREA: true, INPUT: true };
|
|
65
|
-
var win = getWindow();
|
|
66
|
-
if (isNullOrUndefined(clickEvent) && win) {
|
|
67
|
-
clickEvent = win.event; // IE 8 does not pass the event
|
|
68
|
-
}
|
|
69
|
-
if (clickEvent) {
|
|
70
|
-
var element = clickEvent.srcElement || clickEvent.target;
|
|
71
|
-
// populate overrideValues
|
|
72
|
-
var overrideValues = {
|
|
73
|
-
clickCoordinateX: clickEvent.pageX,
|
|
74
|
-
clickCoordinateY: clickEvent.pageY
|
|
23
|
+
var _evtNamespace = mergeEvtNamespace(createUniqueNamespace("AutoCaptureHandler"), _analyticsPlugin._evtNamespace);
|
|
24
|
+
dynamicProto(AutoCaptureHandler, this, function (_self) {
|
|
25
|
+
_self.click = function () {
|
|
26
|
+
var win = getWindow();
|
|
27
|
+
var doc = getDocument();
|
|
28
|
+
if (win) {
|
|
29
|
+
// IE9 onwards addEventListener is available, 'click' event captures mouse click. mousedown works on other browsers
|
|
30
|
+
var event_1 = (navigator.appVersion.indexOf("MSIE") !== -1) ? "click" : "mousedown";
|
|
31
|
+
eventOn(win, event_1, _processClick, _evtNamespace);
|
|
32
|
+
eventOn(win, "keyup", _processClick, _evtNamespace);
|
|
33
|
+
}
|
|
34
|
+
else if (doc) {
|
|
35
|
+
// IE8 and below doesn't have addEventListener so it will use attachEvent
|
|
36
|
+
// attaching to window does not work in IE8
|
|
37
|
+
eventOn(doc, "click", _processClick, _evtNamespace);
|
|
38
|
+
eventOn(doc, "keyup", _processClick, _evtNamespace);
|
|
39
|
+
}
|
|
75
40
|
};
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
overrideValues.actionType = ActionType.KEYBOARDENTER;
|
|
85
|
-
}
|
|
86
|
-
else if (isKeyboardSpace(clickEvent)) {
|
|
87
|
-
overrideValues.actionType = ActionType.KEYBOARDSPACE;
|
|
88
|
-
}
|
|
89
|
-
else if (isMiddleClick(clickEvent)) {
|
|
90
|
-
overrideValues.actionType = ActionType.CLICKMIDDLE;
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
while (element && element.tagName) {
|
|
96
|
-
// control property will be available for <label> elements with 'for' attribute, only use it when is a
|
|
97
|
-
// valid JSLL capture element to avoid infinite loops
|
|
98
|
-
if (element.control && clickCaptureElements[element.control.tagName.toUpperCase()]) {
|
|
99
|
-
element = element.control;
|
|
41
|
+
_self._doUnload = function (unloadCtx, unloadState, asyncCallback) {
|
|
42
|
+
eventOff(getWindow(), null, null, _evtNamespace);
|
|
43
|
+
eventOff(getDocument(), null, null, _evtNamespace);
|
|
44
|
+
};
|
|
45
|
+
function _capturePageAction(element, overrideValues, customProperties, isRightClick) {
|
|
46
|
+
var donotTrackTag = _self._config.dataTags.customDataPrefix + _self._config.dataTags.dntDataTag;
|
|
47
|
+
if (!isElementDnt(element, donotTrackTag)) {
|
|
48
|
+
_self._pageAction.capturePageAction(element, overrideValues, customProperties, isRightClick);
|
|
100
49
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
50
|
+
}
|
|
51
|
+
// Process click event
|
|
52
|
+
function _processClick(clickEvent) {
|
|
53
|
+
var clickCaptureElements = { A: true, BUTTON: true, AREA: true, INPUT: true };
|
|
54
|
+
var win = getWindow();
|
|
55
|
+
if (isNullOrUndefined(clickEvent) && win) {
|
|
56
|
+
clickEvent = win.event; // IE 8 does not pass the event
|
|
105
57
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
58
|
+
if (clickEvent) {
|
|
59
|
+
var element = clickEvent.srcElement || clickEvent.target;
|
|
60
|
+
// populate overrideValues
|
|
61
|
+
var overrideValues = {
|
|
62
|
+
clickCoordinateX: clickEvent.pageX,
|
|
63
|
+
clickCoordinateY: clickEvent.pageY
|
|
64
|
+
};
|
|
65
|
+
var isRightClickObj = isRightClick(clickEvent);
|
|
66
|
+
if (isRightClickObj) {
|
|
67
|
+
overrideValues.actionType = ActionType.CLICKRIGHT;
|
|
68
|
+
}
|
|
69
|
+
else if (isLeftClick(clickEvent)) {
|
|
70
|
+
overrideValues.actionType = ActionType.CLICKLEFT;
|
|
71
|
+
}
|
|
72
|
+
else if (isKeyboardEnter(clickEvent)) {
|
|
73
|
+
overrideValues.actionType = ActionType.KEYBOARDENTER;
|
|
74
|
+
}
|
|
75
|
+
else if (isKeyboardSpace(clickEvent)) {
|
|
76
|
+
overrideValues.actionType = ActionType.KEYBOARDSPACE;
|
|
77
|
+
}
|
|
78
|
+
else if (isMiddleClick(clickEvent)) {
|
|
79
|
+
overrideValues.actionType = ActionType.CLICKMIDDLE;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
while (element && element.tagName) {
|
|
85
|
+
// control property will be available for <label> elements with 'for' attribute, only use it when is a
|
|
86
|
+
// valid JSLL capture element to avoid infinite loops
|
|
87
|
+
if (element.control && clickCaptureElements[element.control.tagName.toUpperCase()]) {
|
|
88
|
+
element = element.control;
|
|
89
|
+
}
|
|
90
|
+
var tagNameUpperCased = element.tagName.toUpperCase();
|
|
91
|
+
if (!clickCaptureElements[tagNameUpperCased]) {
|
|
92
|
+
element = element.parentElement || element.parentNode;
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
// Check allowed INPUT types
|
|
97
|
+
var sendEvent = tagNameUpperCased === "INPUT" ? clickCaptureInputTypes[element.type.toUpperCase()] : true;
|
|
98
|
+
if (sendEvent) {
|
|
99
|
+
_capturePageAction(element, overrideValues, {}, isRightClickObj);
|
|
100
|
+
}
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
111
103
|
}
|
|
112
|
-
break;
|
|
113
104
|
}
|
|
114
105
|
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
// handle automatic event firing on user click
|
|
109
|
+
// Removed Stub for AutoCaptureHandler.prototype.click.
|
|
110
|
+
// Removed Stub for AutoCaptureHandler.prototype._doUnload.
|
|
117
111
|
return AutoCaptureHandler;
|
|
118
112
|
}());
|
|
119
113
|
export { AutoCaptureHandler };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoCaptureHandler.js.map","sources":["AutoCaptureHandler.js"],"sourcesContent":["/**\r\n * @copyright Microsoft 2020\r\n */\r\nimport { getWindow, getDocument, isNullOrUndefined,
|
|
1
|
+
{"version":3,"file":"AutoCaptureHandler.js.map","sources":["AutoCaptureHandler.js"],"sourcesContent":["/**\r\n * @copyright Microsoft 2020\r\n */\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { getWindow, getDocument, isNullOrUndefined, mergeEvtNamespace, createUniqueNamespace, eventOn, eventOff } from \"@microsoft/applicationinsights-core-js\";\r\nimport { isRightClick, isLeftClick, isKeyboardEnter, isKeyboardSpace, isMiddleClick, isElementDnt } from \"../common/Utils\";\r\nimport { ActionType } from \"../Enums\";\r\nvar clickCaptureInputTypes = { BUTTON: true, CHECKBOX: true, RADIO: true, RESET: true, SUBMIT: true };\r\nvar AutoCaptureHandler = /** @class */ (function () {\r\n /**\r\n * @param analyticsPlugin - WebAnalytics plugin\r\n * @param traceLogger - Trace logger to log to console.\r\n */\r\n function AutoCaptureHandler(_analyticsPlugin, _config, _pageAction, _traceLogger) {\r\n this._analyticsPlugin = _analyticsPlugin;\r\n this._config = _config;\r\n this._pageAction = _pageAction;\r\n this._traceLogger = _traceLogger;\r\n var _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"AutoCaptureHandler\"), _analyticsPlugin._evtNamespace);\r\n dynamicProto(AutoCaptureHandler, this, function (_self) {\r\n _self.click = function () {\r\n var win = getWindow();\r\n var doc = getDocument();\r\n if (win) {\r\n // IE9 onwards addEventListener is available, 'click' event captures mouse click. mousedown works on other browsers\r\n var event_1 = (navigator.appVersion.indexOf(\"MSIE\") !== -1) ? \"click\" : \"mousedown\";\r\n eventOn(win, event_1, _processClick, _evtNamespace);\r\n eventOn(win, \"keyup\", _processClick, _evtNamespace);\r\n }\r\n else if (doc) {\r\n // IE8 and below doesn't have addEventListener so it will use attachEvent\r\n // attaching to window does not work in IE8\r\n eventOn(doc, \"click\", _processClick, _evtNamespace);\r\n eventOn(doc, \"keyup\", _processClick, _evtNamespace);\r\n }\r\n };\r\n _self._doUnload = function (unloadCtx, unloadState, asyncCallback) {\r\n eventOff(getWindow(), null, null, _evtNamespace);\r\n eventOff(getDocument(), null, null, _evtNamespace);\r\n };\r\n function _capturePageAction(element, overrideValues, customProperties, isRightClick) {\r\n var donotTrackTag = _self._config.dataTags.customDataPrefix + _self._config.dataTags.dntDataTag;\r\n if (!isElementDnt(element, donotTrackTag)) {\r\n _self._pageAction.capturePageAction(element, overrideValues, customProperties, isRightClick);\r\n }\r\n }\r\n // Process click event\r\n function _processClick(clickEvent) {\r\n var clickCaptureElements = { A: true, BUTTON: true, AREA: true, INPUT: true };\r\n var win = getWindow();\r\n if (isNullOrUndefined(clickEvent) && win) {\r\n clickEvent = win.event; // IE 8 does not pass the event\r\n }\r\n if (clickEvent) {\r\n var element = clickEvent.srcElement || clickEvent.target;\r\n // populate overrideValues\r\n var overrideValues = {\r\n clickCoordinateX: clickEvent.pageX,\r\n clickCoordinateY: clickEvent.pageY\r\n };\r\n var isRightClickObj = isRightClick(clickEvent);\r\n if (isRightClickObj) {\r\n overrideValues.actionType = ActionType.CLICKRIGHT;\r\n }\r\n else if (isLeftClick(clickEvent)) {\r\n overrideValues.actionType = ActionType.CLICKLEFT;\r\n }\r\n else if (isKeyboardEnter(clickEvent)) {\r\n overrideValues.actionType = ActionType.KEYBOARDENTER;\r\n }\r\n else if (isKeyboardSpace(clickEvent)) {\r\n overrideValues.actionType = ActionType.KEYBOARDSPACE;\r\n }\r\n else if (isMiddleClick(clickEvent)) {\r\n overrideValues.actionType = ActionType.CLICKMIDDLE;\r\n }\r\n else {\r\n return;\r\n }\r\n while (element && element.tagName) {\r\n // control property will be available for <label> elements with 'for' attribute, only use it when is a\r\n // valid JSLL capture element to avoid infinite loops\r\n if (element.control && clickCaptureElements[element.control.tagName.toUpperCase()]) {\r\n element = element.control;\r\n }\r\n var tagNameUpperCased = element.tagName.toUpperCase();\r\n if (!clickCaptureElements[tagNameUpperCased]) {\r\n element = element.parentElement || element.parentNode;\r\n continue;\r\n }\r\n else {\r\n // Check allowed INPUT types\r\n var sendEvent = tagNameUpperCased === \"INPUT\" ? clickCaptureInputTypes[element.type.toUpperCase()] : true;\r\n if (sendEvent) {\r\n _capturePageAction(element, overrideValues, {}, isRightClickObj);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n // handle automatic event firing on user click\r\n AutoCaptureHandler.prototype.click = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AutoCaptureHandler.prototype._doUnload = function (unloadCtx, unloadState, asyncCallback) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return AutoCaptureHandler;\r\n}());\r\nexport { AutoCaptureHandler };\r\n//# sourceMappingURL=AutoCaptureHandler.js.map"],"names":[],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;2DAKM;AACN;AACA;AACA;AACA"}
|