@microsoft/applicationinsights-clickanalytics-js 2.8.0-nightly.2202-06 → 2.8.0-nightly.2204-04

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 (79) hide show
  1. package/browser/ai.clck.2.8.0-nightly.2204-04.cjs.js +2883 -0
  2. package/browser/ai.clck.2.8.0-nightly.2204-04.cjs.js.map +1 -0
  3. package/browser/ai.clck.2.8.0-nightly.2204-04.cjs.min.js +6 -0
  4. package/browser/ai.clck.2.8.0-nightly.2204-04.cjs.min.js.map +1 -0
  5. package/browser/ai.clck.2.8.0-nightly.2204-04.gbl.js +2887 -0
  6. package/browser/ai.clck.2.8.0-nightly.2204-04.gbl.js.map +1 -0
  7. package/browser/ai.clck.2.8.0-nightly.2204-04.gbl.min.js +6 -0
  8. package/browser/ai.clck.2.8.0-nightly.2204-04.gbl.min.js.map +1 -0
  9. package/browser/ai.clck.2.8.0-nightly.2204-04.integrity.json +66 -0
  10. package/browser/ai.clck.2.8.0-nightly.2204-04.js +2889 -0
  11. package/browser/ai.clck.2.8.0-nightly.2204-04.js.map +1 -0
  12. package/browser/ai.clck.2.8.0-nightly.2204-04.min.js +6 -0
  13. package/browser/ai.clck.2.8.0-nightly.2204-04.min.js.map +1 -0
  14. package/browser/ai.clck.2.cjs.js +1685 -808
  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 +1685 -808
  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 +1685 -808
  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 +38 -13
  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 +1685 -808
  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 +4 -2
  38. package/dist-esm/DataCollector.js.map +1 -1
  39. package/dist-esm/Enums.js +1 -1
  40. package/dist-esm/Interfaces/Datamodel.js +1 -1
  41. package/dist-esm/applicationinsights-clickanalytics-js.js +1 -1
  42. package/dist-esm/common/Utils.js +1 -1
  43. package/dist-esm/events/PageAction.js +128 -126
  44. package/dist-esm/events/PageAction.js.map +1 -1
  45. package/dist-esm/events/WebEvent.js +109 -94
  46. package/dist-esm/events/WebEvent.js.map +1 -1
  47. package/dist-esm/handlers/AutoCaptureHandler.js +85 -83
  48. package/dist-esm/handlers/AutoCaptureHandler.js.map +1 -1
  49. package/dist-esm/handlers/DomContentHandler.js +279 -276
  50. package/dist-esm/handlers/DomContentHandler.js.map +1 -1
  51. package/package.json +5 -5
  52. package/src/ClickAnalyticsPlugin.ts +92 -47
  53. package/src/DataCollector.ts +24 -22
  54. package/src/Interfaces/Datamodel.ts +20 -21
  55. package/src/common/Utils.ts +8 -8
  56. package/src/events/PageAction.ts +165 -131
  57. package/src/events/WebEvent.ts +147 -78
  58. package/src/handlers/AutoCaptureHandler.ts +89 -79
  59. package/src/handlers/DomContentHandler.ts +336 -303
  60. package/types/ClickAnalyticsPlugin.d.ts +1 -4
  61. package/types/Interfaces/Datamodel.d.ts +3 -2
  62. package/types/events/PageAction.d.ts +6 -6
  63. package/types/events/WebEvent.d.ts +17 -17
  64. package/types/handlers/AutoCaptureHandler.d.ts +2 -10
  65. package/types/handlers/DomContentHandler.d.ts +3 -50
  66. package/types/tsdoc-metadata.json +1 -1
  67. package/browser/ai.clck.2.8.0-nightly.2202-06.cjs.js +0 -2006
  68. package/browser/ai.clck.2.8.0-nightly.2202-06.cjs.js.map +0 -1
  69. package/browser/ai.clck.2.8.0-nightly.2202-06.cjs.min.js +0 -6
  70. package/browser/ai.clck.2.8.0-nightly.2202-06.cjs.min.js.map +0 -1
  71. package/browser/ai.clck.2.8.0-nightly.2202-06.gbl.js +0 -2010
  72. package/browser/ai.clck.2.8.0-nightly.2202-06.gbl.js.map +0 -1
  73. package/browser/ai.clck.2.8.0-nightly.2202-06.gbl.min.js +0 -6
  74. package/browser/ai.clck.2.8.0-nightly.2202-06.gbl.min.js.map +0 -1
  75. package/browser/ai.clck.2.8.0-nightly.2202-06.integrity.json +0 -66
  76. package/browser/ai.clck.2.8.0-nightly.2202-06.js +0 -2012
  77. package/browser/ai.clck.2.8.0-nightly.2202-06.js.map +0 -1
  78. package/browser/ai.clck.2.8.0-nightly.2202-06.min.js +0 -6
  79. package/browser/ai.clck.2.8.0-nightly.2202-06.min.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"PageAction.js.map","sources":["PageAction.js"],"sourcesContent":["/**\r\n * @copyright Microsoft 2020\r\n */\r\nimport { __extends } from \"tslib\";\r\nimport { WebEvent } from \"./WebEvent\";\r\nimport * as DataCollector from \"../DataCollector\";\r\nimport { getPerformance, LoggingSeverity, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport { extractFieldFromObject, bracketIt, isValueAssigned, extend, _ExtendedInternalMessageId } from \"../common/Utils\";\r\nimport { strNotSpecified } from \"@microsoft/applicationinsights-common\";\r\nvar PageAction = /** @class */ (function (_super) {\r\n __extends(PageAction, _super);\r\n function PageAction() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * API to send pageAction event\r\n * @param pageActionEvent - PageAction event\r\n * @param properties - PageAction properties(Part C)\r\n */\r\n PageAction.prototype.trackPageAction = function (pageActionEvent, properties) {\r\n var _this = this;\r\n // Get part A properties\r\n var ext = {};\r\n ext[\"web\"] = {};\r\n var event = {\r\n name: \"Microsoft.ApplicationInsights.{0}.Event\",\r\n baseType: \"EventData\",\r\n ext: ext,\r\n data: {},\r\n baseData: {}\r\n };\r\n this._populateEventDataIfPresent(event.baseData, \"name\", pageActionEvent.name);\r\n this._populateEventDataIfPresent(event.data, \"baseTypeSource\", \"ClickEvent\");\r\n this._populateEventDataIfPresent(event.data, \"uri\", pageActionEvent.uri);\r\n this._populateEventDataIfPresent(event.data, \"pageType\", pageActionEvent.pageType);\r\n this._populateEventDataIfPresent(event.data, \"properties\", pageActionEvent.properties);\r\n this._populateEventDataIfPresent(event.data, \"actionType\", pageActionEvent.actionType);\r\n this._populateEventDataIfPresent(event.data, \"behavior\", pageActionEvent.behavior);\r\n this._populateEventDataIfPresent(event.data, \"clickCoordinates\", pageActionEvent.clickCoordinates);\r\n this._populateEventDataIfPresent(event.data, \"content\", pageActionEvent.content);\r\n this._populateEventDataIfPresent(event.data, \"targetUri\", pageActionEvent.targetUri);\r\n this._populateEventDataIfPresent(event.data, \"timeToAction\", pageActionEvent.timeToAction);\r\n this._populateEventDataIfPresent(event.data, \"refUri\", pageActionEvent.refUri);\r\n this._populateEventDataIfPresent(event.data, \"pageName\", pageActionEvent.pageName);\r\n this._populateEventDataIfPresent(event.data, \"parentId\", pageActionEvent.parentId);\r\n if (properties) {\r\n objForEachKey(properties, function (property, value) {\r\n if (!event.data[property]) {\r\n _this._populateEventDataIfPresent(event.data, property, value);\r\n }\r\n });\r\n }\r\n this._clickAnalyticsPlugin.core.track(event);\r\n };\r\n /**\r\n * API to create and send a populated PageAction event\r\n * @param element - DOM element\r\n * @param overrideValues - PageAction overrides\r\n * @param customProperties - Custom properties(Part C)\r\n * @param isRightClick - Flag for mouse right clicks\r\n */\r\n PageAction.prototype.capturePageAction = function (element, overrideValues, customProperties, isRightClick) {\r\n overrideValues = !isValueAssigned(overrideValues) ? {} : overrideValues;\r\n var pageActionEvent = { name: \"\" };\r\n var pageActionProperties = isValueAssigned(customProperties) ? customProperties : {};\r\n this.setCommonProperties(pageActionEvent, overrideValues);\r\n pageActionEvent.behavior = this._getBehavior(overrideValues);\r\n // element in scope is needed for below properties. We cannot pass element into the plugin call chain.\r\n // process them here.\r\n var elementContent = {};\r\n if (isRightClick) {\r\n // Default behavior for righ click\r\n pageActionEvent.behavior = this._config.defaultRightClickBhvr;\r\n }\r\n // Fill PartB\r\n if (element) {\r\n pageActionEvent.targetUri = DataCollector.getClickTarget(element);\r\n elementContent = this._contentHandler.getElementContent(element); // collect id,cn tags\r\n // if the element has a data-*-bhvr attrib defined, use it.\r\n if (elementContent.bhvr && !isValueAssigned(overrideValues.behavior)) {\r\n var currentBehavior = extractFieldFromObject(elementContent, \"bhvr\");\r\n pageActionEvent.behavior = this._getValidBehavior(currentBehavior);\r\n }\r\n // Validate to ensure the minimum required field 'contentName' or 'id' is present. However,\r\n // requiring these fields would result in majority of adopter's content from being collected.\r\n // Just throw a warning and continue collection.\r\n if (!isValueAssigned(elementContent.id) && !isValueAssigned(elementContent.contentName)) {\r\n this._traceLogger.throwInternal(LoggingSeverity.WARNING, _ExtendedInternalMessageId.InvalidContentBlob, \"Missing attributes id or contentName in click event. Click event information will still be collected!\");\r\n }\r\n }\r\n pageActionEvent.name = elementContent.id || elementContent.contentName || strNotSpecified;\r\n pageActionEvent.parentId = elementContent.parentid || elementContent.parentName || strNotSpecified;\r\n if (isValueAssigned(overrideValues.actionType)) {\r\n pageActionEvent.actionType = overrideValues.actionType;\r\n }\r\n if (isValueAssigned(overrideValues.clickCoordinateX) && isValueAssigned(overrideValues.clickCoordinateY)) {\r\n pageActionEvent.clickCoordinates = overrideValues.clickCoordinateX + \"X\" + overrideValues.clickCoordinateY;\r\n }\r\n this._sanitizePageActionEventContent(elementContent);\r\n pageActionEvent.content = bracketIt(JSON.stringify(extend(elementContent, overrideValues && overrideValues.contentTags ? overrideValues.contentTags : {})));\r\n pageActionEvent.timeToAction = this._getTimeToClick();\r\n pageActionEvent.refUri = isValueAssigned(overrideValues.refUri) ? overrideValues.refUri : this._config.coreData.referrerUri;\r\n if (this._isUndefinedEvent(pageActionEvent))\r\n return;\r\n this.trackPageAction(pageActionEvent, pageActionProperties);\r\n };\r\n // capture performance data into PageTags\r\n PageAction.prototype._getTimeToClick = function () {\r\n var perf = getPerformance();\r\n if (perf && perf.timing) {\r\n var isNavigationStart = perf.timing.navigationStart;\r\n if (isNavigationStart && isNavigationStart !== 0) {\r\n return new Date().getTime() - isNavigationStart;\r\n }\r\n }\r\n return -1;\r\n };\r\n PageAction.prototype._populateEventDataIfPresent = function (obj, property, value) {\r\n if (isValueAssigned(value)) {\r\n obj[property] = value;\r\n }\r\n };\r\n PageAction.prototype._sanitizePageActionEventContent = function (pageActionContent) {\r\n if (pageActionContent) {\r\n delete pageActionContent.id;\r\n delete pageActionContent.parentid;\r\n delete pageActionContent.parentname;\r\n if (this._config && this._config.dataTags && isValueAssigned(this._config.dataTags.parentDataTag)) {\r\n delete pageActionContent[this._config.dataTags.parentDataTag];\r\n }\r\n }\r\n };\r\n PageAction.prototype._isUndefinedEvent = function (pageActionEvent) {\r\n if (this._config.dropInvalidEvents) {\r\n if (pageActionEvent.name === strNotSpecified\r\n && pageActionEvent.parentId === strNotSpecified\r\n && pageActionEvent.content === \"[{}]\")\r\n return true;\r\n }\r\n return false;\r\n };\r\n return PageAction;\r\n}(WebEvent));\r\nexport { PageAction };\r\n//# sourceMappingURL=PageAction.js.map"],"names":[],"mappings":";;;;AAAA;AACA;AACA;AACA,gFAAkC;AAClC;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
1
+ {"version":3,"file":"PageAction.js.map","sources":["PageAction.js"],"sourcesContent":["/**\r\n * @copyright Microsoft 2020\r\n */\r\nimport { __extends } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { WebEvent } from \"./WebEvent\";\r\nimport * as DataCollector from \"../DataCollector\";\r\nimport { getPerformance, LoggingSeverity, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport { extractFieldFromObject, bracketIt, isValueAssigned, extend, _ExtendedInternalMessageId } from \"../common/Utils\";\r\nimport { strNotSpecified } from \"@microsoft/applicationinsights-common\";\r\nvar PageAction = /** @class */ (function (_super) {\r\n __extends(PageAction, _super);\r\n function PageAction(clickAnalyticsPlugin, config, contentHandler, pageTagsCallback, metaTags, traceLogger) {\r\n var _this = _super.call(this, clickAnalyticsPlugin, config, contentHandler, pageTagsCallback, metaTags, traceLogger) || this;\r\n dynamicProto(PageAction, _this, function (_self, _base) {\r\n _self.trackPageAction = function (pageActionEvent, properties) {\r\n // Get part A properties\r\n var ext = {};\r\n ext[\"web\"] = {};\r\n var event = {\r\n name: \"Microsoft.ApplicationInsights.{0}.Event\",\r\n baseType: \"EventData\",\r\n ext: ext,\r\n data: {},\r\n baseData: {}\r\n };\r\n _populateEventDataIfPresent(event.baseData, \"name\", pageActionEvent.name);\r\n _populateEventDataIfPresent(event.data, \"baseTypeSource\", \"ClickEvent\");\r\n _populateEventDataIfPresent(event.data, \"uri\", pageActionEvent.uri);\r\n _populateEventDataIfPresent(event.data, \"pageType\", pageActionEvent.pageType);\r\n _populateEventDataIfPresent(event.data, \"properties\", pageActionEvent.properties);\r\n _populateEventDataIfPresent(event.data, \"actionType\", pageActionEvent.actionType);\r\n _populateEventDataIfPresent(event.data, \"behavior\", pageActionEvent.behavior);\r\n _populateEventDataIfPresent(event.data, \"clickCoordinates\", pageActionEvent.clickCoordinates);\r\n _populateEventDataIfPresent(event.data, \"content\", pageActionEvent.content);\r\n _populateEventDataIfPresent(event.data, \"targetUri\", pageActionEvent.targetUri);\r\n _populateEventDataIfPresent(event.data, \"timeToAction\", pageActionEvent.timeToAction);\r\n _populateEventDataIfPresent(event.data, \"refUri\", pageActionEvent.refUri);\r\n _populateEventDataIfPresent(event.data, \"pageName\", pageActionEvent.pageName);\r\n _populateEventDataIfPresent(event.data, \"parentId\", pageActionEvent.parentId);\r\n if (properties) {\r\n objForEachKey(properties, function (property, value) {\r\n if (!event.data[property]) {\r\n _populateEventDataIfPresent(event.data, property, value);\r\n }\r\n });\r\n }\r\n _self._clickAnalyticsPlugin.core.track(event);\r\n };\r\n /**\r\n * API to create and send a populated PageAction event\r\n * @param element - DOM element\r\n * @param overrideValues - PageAction overrides\r\n * @param customProperties - Custom properties(Part C)\r\n * @param isRightClick - Flag for mouse right clicks\r\n */\r\n _self.capturePageAction = function (element, overrideValues, customProperties, isRightClick) {\r\n overrideValues = !isValueAssigned(overrideValues) ? {} : overrideValues;\r\n var pageActionEvent = { name: \"\" };\r\n var pageActionProperties = isValueAssigned(customProperties) ? customProperties : {};\r\n _self.setCommonProperties(pageActionEvent, overrideValues);\r\n pageActionEvent.behavior = _self._getBehavior(overrideValues);\r\n // element in scope is needed for below properties. We cannot pass element into the plugin call chain.\r\n // process them here.\r\n var elementContent = {};\r\n if (isRightClick) {\r\n // Default behavior for righ click\r\n pageActionEvent.behavior = _self._config.defaultRightClickBhvr;\r\n }\r\n // Fill PartB\r\n if (element) {\r\n pageActionEvent.targetUri = DataCollector.getClickTarget(element);\r\n elementContent = _self._contentHandler.getElementContent(element); // collect id,cn tags\r\n // if the element has a data-*-bhvr attrib defined, use it.\r\n if (elementContent.bhvr && !isValueAssigned(overrideValues.behavior)) {\r\n var currentBehavior = extractFieldFromObject(elementContent, \"bhvr\");\r\n pageActionEvent.behavior = _self._getValidBehavior(currentBehavior);\r\n }\r\n // Validate to ensure the minimum required field 'contentName' or 'id' is present. However,\r\n // requiring these fields would result in majority of adopter's content from being collected.\r\n // Just throw a warning and continue collection.\r\n if (!isValueAssigned(elementContent.id) && !isValueAssigned(elementContent.contentName)) {\r\n _self._traceLogger.throwInternal(LoggingSeverity.WARNING, _ExtendedInternalMessageId.InvalidContentBlob, \"Missing attributes id or contentName in click event. Click event information will still be collected!\");\r\n }\r\n }\r\n pageActionEvent.name = elementContent.id || elementContent.contentName || strNotSpecified;\r\n pageActionEvent.parentId = elementContent.parentid || elementContent.parentName || strNotSpecified;\r\n if (isValueAssigned(overrideValues.actionType)) {\r\n pageActionEvent.actionType = overrideValues.actionType;\r\n }\r\n if (isValueAssigned(overrideValues.clickCoordinateX) && isValueAssigned(overrideValues.clickCoordinateY)) {\r\n pageActionEvent.clickCoordinates = overrideValues.clickCoordinateX + \"X\" + overrideValues.clickCoordinateY;\r\n }\r\n _sanitizePageActionEventContent(elementContent);\r\n pageActionEvent.content = bracketIt(JSON.stringify(extend(elementContent, overrideValues && overrideValues.contentTags ? overrideValues.contentTags : {})));\r\n pageActionEvent.timeToAction = _getTimeToClick();\r\n pageActionEvent.refUri = isValueAssigned(overrideValues.refUri) ? overrideValues.refUri : _self._config.coreData.referrerUri;\r\n if (_isUndefinedEvent(pageActionEvent)) {\r\n return;\r\n }\r\n _self.trackPageAction(pageActionEvent, pageActionProperties);\r\n };\r\n // capture performance data into PageTags\r\n function _getTimeToClick() {\r\n var perf = getPerformance();\r\n if (perf && perf.timing) {\r\n var isNavigationStart = perf.timing.navigationStart;\r\n if (isNavigationStart && isNavigationStart !== 0) {\r\n return new Date().getTime() - isNavigationStart;\r\n }\r\n }\r\n return -1;\r\n }\r\n function _populateEventDataIfPresent(obj, property, value) {\r\n if (isValueAssigned(value)) {\r\n obj[property] = value;\r\n }\r\n }\r\n function _sanitizePageActionEventContent(pageActionContent) {\r\n if (pageActionContent) {\r\n delete pageActionContent.id;\r\n delete pageActionContent.parentid;\r\n delete pageActionContent.parentname;\r\n if (_self._config && _self._config.dataTags && isValueAssigned(_self._config.dataTags.parentDataTag)) {\r\n delete pageActionContent[_self._config.dataTags.parentDataTag];\r\n }\r\n }\r\n }\r\n function _isUndefinedEvent(pageActionEvent) {\r\n if (_self._config.dropInvalidEvents) {\r\n if (pageActionEvent.name === strNotSpecified\r\n && pageActionEvent.parentId === strNotSpecified\r\n && pageActionEvent.content === \"[{}]\") {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n });\r\n return _this;\r\n }\r\n /**\r\n * API to send pageAction event\r\n * @param pageActionEvent - PageAction event\r\n * @param properties - PageAction properties(Part C)\r\n */\r\n PageAction.prototype.trackPageAction = function (pageActionEvent, properties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * API to create and send a populated PageAction event\r\n * @param element - DOM element\r\n * @param overrideValues - PageAction overrides\r\n * @param customProperties - Custom properties(Part C)\r\n * @param isRightClick - Flag for mouse right clicks\r\n */\r\n PageAction.prototype.capturePageAction = function (element, overrideValues, customProperties, isRightClick) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return PageAction;\r\n}(WebEvent));\r\nexport { PageAction };\r\n//# sourceMappingURL=PageAction.js.map"],"names":[],"mappings":";;;;AAAA;AACA;AACA;AACA,gFAAkC;AAClC;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;2DAiBM;AACN;AACA;AACA;AACA"}
@@ -1,10 +1,11 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Click Analytics, 2.8.0-nightly.2202-06
2
+ * Application Insights JavaScript SDK - Click Analytics, 2.8.0-nightly.2204-04
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(_clickAnalyticsPlugin, _config, _contentHandler, _pageTagsCallback, _metaTags, _traceLogger) {
22
- this._clickAnalyticsPlugin = _clickAnalyticsPlugin;
23
- this._config = _config;
24
- this._contentHandler = _contentHandler;
25
- this._pageTagsCallback = _pageTagsCallback;
26
- this._metaTags = _metaTags;
27
- this._traceLogger = _traceLogger;
28
- this._pageTags = {};
29
- }
30
- // Fill common PartB fields
31
- WebEvent.prototype.setBasicProperties = function (event, overrideValues) {
32
- if (!isValueAssigned(event.name)) {
33
- event.pageName = DataCollector.getPageName(this._config, overrideValues);
34
- }
35
- if (!isValueAssigned(event.uri) && hasWindow) {
36
- event.uri = DataCollector.getUri(this._config, getLocation());
37
- }
38
- };
39
- /**
40
- * Sets common properties for events that are based on the WebEvent schema.
41
- * @param event - The event
42
- */
43
- WebEvent.prototype.setCommonProperties = function (event, overrideValues) {
44
- this.setBasicProperties(event, overrideValues);
45
- this._setPageTags(event, overrideValues);
46
- // extract specific meta tags out of the pageTags.metaTags collection. These will go into assigned first class fields in the event.
47
- // the rest will go into pageTags.metaTags collection as is.
48
- this._pageTypeMetaTag = this._getMetaData(this._metaTags, this._config.coreData, "pageType");
49
- this._behaviorMetaTag = this._getMetaData(this._metaTags, this._config.coreData, "behavior");
50
- if (isValueAssigned(overrideValues.pageType)) {
51
- event.pageType = overrideValues.pageType;
52
- }
53
- // Only assign if not overriden and meta data is available
54
- if (isValueAssigned(this._pageTypeMetaTag) && !isValueAssigned(event.pageType)) {
55
- event.pageType = this._pageTypeMetaTag;
56
- }
57
- };
58
- /**
59
- * Sets pageTags.
60
- * @param event - The event
61
- */
62
- WebEvent.prototype._setPageTags = function (event, overrideValues) {
63
- // Prepare the pageTags object that is mostly the same for all events. Event specific pageTags will be added inside event constructors.
64
- if (this._pageTagsCallback) {
65
- this._pageTags = extend(true, this._pageTags, this._pageTagsCallback());
66
- }
67
- if (isValueAssigned(overrideValues.pageTags)) {
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
- // All metadata tags that must be saved as properties have been extracted at this point. Assign pageTags as is.
81
- event.properties = event.properties || {};
82
- event.properties["pageTags"] = this._pageTags;
83
- };
84
- WebEvent.prototype._getBehavior = function (overrideValues) {
85
- var behavior;
86
- // If override specified
87
- if (overrideValues && isValueAssigned(overrideValues.behavior)) {
88
- behavior = overrideValues.behavior;
89
- }
90
- // If behavior meta tag available
91
- else if (isValueAssigned(this._behaviorMetaTag)) {
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(_clickAnalyticsPlugin, _config, _contentHandler, _pageTagsCallback, _metaTags, _traceLogger) {\r\n this._clickAnalyticsPlugin = _clickAnalyticsPlugin;\r\n this._config = _config;\r\n this._contentHandler = _contentHandler;\r\n this._pageTagsCallback = _pageTagsCallback;\r\n this._metaTags = _metaTags;\r\n this._traceLogger = _traceLogger;\r\n this._pageTags = {};\r\n }\r\n // Fill common PartB fields\r\n WebEvent.prototype.setBasicProperties = function (event, overrideValues) {\r\n if (!isValueAssigned(event.name)) {\r\n event.pageName = DataCollector.getPageName(this._config, overrideValues);\r\n }\r\n if (!isValueAssigned(event.uri) && hasWindow) {\r\n event.uri = DataCollector.getUri(this._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 WebEvent.prototype.setCommonProperties = function (event, overrideValues) {\r\n this.setBasicProperties(event, overrideValues);\r\n this._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 this._pageTypeMetaTag = this._getMetaData(this._metaTags, this._config.coreData, \"pageType\");\r\n this._behaviorMetaTag = this._getMetaData(this._metaTags, this._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(this._pageTypeMetaTag) && !isValueAssigned(event.pageType)) {\r\n event.pageType = this._pageTypeMetaTag;\r\n }\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 // Prepare the pageTags object that is mostly the same for all events. Event specific pageTags will be added inside event constructors.\r\n if (this._pageTagsCallback) {\r\n this._pageTags = extend(true, this._pageTags, this._pageTagsCallback());\r\n }\r\n if (isValueAssigned(overrideValues.pageTags)) {\r\n this._pageTags = extend(true, this._pageTags, overrideValues.pageTags);\r\n }\r\n // If metadata is present add it to pageTags property\r\n if (this._metaTags) {\r\n this._pageTags.metaTags = {};\r\n // Remove not supported meta data in pageTags.metaTags\r\n for (var metaTag in this._metaTags) {\r\n if (metaTag != \"behavior\" && metaTag != \"market\" && metaTag != \"pageType\") {\r\n this._pageTags.metaTags[metaTag] = this._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\"] = this._pageTags;\r\n };\r\n WebEvent.prototype._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 // If behavior meta tag available\r\n else if (isValueAssigned(this._behaviorMetaTag)) {\r\n behavior = this._behaviorMetaTag;\r\n }\r\n return this._getValidBehavior(behavior);\r\n };\r\n WebEvent.prototype._getValidBehavior = function (behavior) {\r\n return this._config.behaviorValidator(behavior);\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 WebEvent.prototype._getMetaData = function (metaTags, coreData, metaTagName) {\r\n if (coreData && coreData[metaTagName]) {\r\n return coreData[metaTagName];\r\n }\r\n else if (metaTags) {\r\n return metaTags[metaTagName];\r\n }\r\n return \"\";\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"}
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-nightly.2202-06
2
+ * Application Insights JavaScript SDK - Click Analytics, 2.8.0-nightly.2204-04
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
  /**
6
6
  * @copyright Microsoft 2020
7
7
  */
8
- import { getWindow, getDocument, isNullOrUndefined, attachEvent } from "@microsoft/applicationinsights-core-js";
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,93 +20,94 @@ var AutoCaptureHandler = /** @class */ (function () {
19
20
  this._config = _config;
20
21
  this._pageAction = _pageAction;
21
22
  this._traceLogger = _traceLogger;
22
- }
23
- // handle automatic event firing on user click
24
- AutoCaptureHandler.prototype.click = function () {
25
- var _this = this;
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
- attachEvent(win, event_1, function (evt) { _this._processClick(evt); });
32
- attachEvent(win, "keyup", function (evt) { _this._processClick(evt); });
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
- attachEvent(doc, "click", function (evt) { _this._processClick(evt); });
38
- attachEvent(doc, "keyup", function (evt) { _this._processClick(evt); });
39
- }
40
- };
41
- /**
42
- * API to create and send a populated PageAction event
43
- * @param element - DOM element
44
- * @param overrideValues - PageAction overrides
45
- * @param customProperties - Custom properties(Part C)
46
- * @param isRightClick - Flag for mouse right clicks
47
- */
48
- AutoCaptureHandler.prototype.capturePageAction = function (element, overrideValues, customProperties, isRightClick) {
49
- var donotTrackTag = this._config.dataTags.customDataPrefix + this._config.dataTags.dntDataTag;
50
- if (!isElementDnt(element, donotTrackTag)) {
51
- this._pageAction.capturePageAction(element, overrideValues, customProperties, isRightClick);
52
- }
53
- };
54
- // Process click event
55
- AutoCaptureHandler.prototype._processClick = function (clickEvent) {
56
- var clickCaptureElements = { A: true, BUTTON: true, AREA: true, INPUT: true };
57
- var win = getWindow();
58
- if (isNullOrUndefined(clickEvent) && win) {
59
- clickEvent = win.event; // IE 8 does not pass the event
60
- }
61
- if (clickEvent) {
62
- var element = clickEvent.srcElement || clickEvent.target;
63
- // populate overrideValues
64
- var overrideValues = {
65
- clickCoordinateX: clickEvent.pageX,
66
- 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
+ }
67
40
  };
68
- var isRightClickObj = isRightClick(clickEvent);
69
- if (isRightClickObj) {
70
- overrideValues.actionType = ActionType.CLICKRIGHT;
71
- }
72
- else if (isLeftClick(clickEvent)) {
73
- overrideValues.actionType = ActionType.CLICKLEFT;
74
- }
75
- else if (isKeyboardEnter(clickEvent)) {
76
- overrideValues.actionType = ActionType.KEYBOARDENTER;
77
- }
78
- else if (isKeyboardSpace(clickEvent)) {
79
- overrideValues.actionType = ActionType.KEYBOARDSPACE;
80
- }
81
- else if (isMiddleClick(clickEvent)) {
82
- overrideValues.actionType = ActionType.CLICKMIDDLE;
83
- }
84
- else {
85
- return;
86
- }
87
- while (element && element.tagName) {
88
- // control property will be available for <label> elements with 'for' attribute, only use it when is a
89
- // valid JSLL capture element to avoid infinite loops
90
- if (element.control && clickCaptureElements[element.control.tagName.toUpperCase()]) {
91
- 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);
92
49
  }
93
- var tagNameUpperCased = element.tagName.toUpperCase();
94
- if (!clickCaptureElements[tagNameUpperCased]) {
95
- element = element.parentElement || element.parentNode;
96
- continue;
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
97
57
  }
98
- else {
99
- // Check allowed INPUT types
100
- var sendEvent = tagNameUpperCased === "INPUT" ? clickCaptureInputTypes[element.type.toUpperCase()] : true;
101
- if (sendEvent) {
102
- this.capturePageAction(element, overrideValues, {}, isRightClickObj);
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
+ }
103
103
  }
104
- break;
105
104
  }
106
105
  }
107
- }
108
- };
106
+ });
107
+ }
108
+ // handle automatic event firing on user click
109
+ // Removed Stub for AutoCaptureHandler.prototype.click.
110
+ // Removed Stub for AutoCaptureHandler.prototype._doUnload.
109
111
  return AutoCaptureHandler;
110
112
  }());
111
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, attachEvent } 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 }\r\n // handle automatic event firing on user click\r\n AutoCaptureHandler.prototype.click = function () {\r\n var _this = this;\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 attachEvent(win, event_1, function (evt) { _this._processClick(evt); });\r\n attachEvent(win, \"keyup\", function (evt) { _this._processClick(evt); });\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 attachEvent(doc, \"click\", function (evt) { _this._processClick(evt); });\r\n attachEvent(doc, \"keyup\", function (evt) { _this._processClick(evt); });\r\n }\r\n };\r\n /**\r\n * API to create and send a populated PageAction event\r\n * @param element - DOM element\r\n * @param overrideValues - PageAction overrides\r\n * @param customProperties - Custom properties(Part C)\r\n * @param isRightClick - Flag for mouse right clicks\r\n */\r\n AutoCaptureHandler.prototype.capturePageAction = function (element, overrideValues, customProperties, isRightClick) {\r\n var donotTrackTag = this._config.dataTags.customDataPrefix + this._config.dataTags.dntDataTag;\r\n if (!isElementDnt(element, donotTrackTag)) {\r\n this._pageAction.capturePageAction(element, overrideValues, customProperties, isRightClick);\r\n }\r\n };\r\n // Process click event\r\n AutoCaptureHandler.prototype._processClick = function (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 this.capturePageAction(element, overrideValues, {}, isRightClickObj);\r\n }\r\n break;\r\n }\r\n }\r\n }\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;AACA;AACA;AACA"}
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"}