@amplitude/plugin-autocapture-browser 1.18.0-zen-plus-zoning.2 → 1.18.1

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 (111) hide show
  1. package/lib/cjs/autocapture/track-action-click.d.ts.map +1 -1
  2. package/lib/cjs/autocapture/track-action-click.js +3 -6
  3. package/lib/cjs/autocapture/track-action-click.js.map +1 -1
  4. package/lib/cjs/autocapture/track-click.d.ts.map +1 -1
  5. package/lib/cjs/autocapture/track-click.js +4 -3
  6. package/lib/cjs/autocapture/track-click.js.map +1 -1
  7. package/lib/cjs/autocapture/track-rage-click.d.ts +1 -1
  8. package/lib/cjs/autocapture/track-rage-click.d.ts.map +1 -1
  9. package/lib/cjs/autocapture/track-rage-click.js +0 -5
  10. package/lib/cjs/autocapture/track-rage-click.js.map +1 -1
  11. package/lib/cjs/autocapture-plugin.d.ts +4 -7
  12. package/lib/cjs/autocapture-plugin.d.ts.map +1 -1
  13. package/lib/cjs/autocapture-plugin.js +7 -10
  14. package/lib/cjs/autocapture-plugin.js.map +1 -1
  15. package/lib/cjs/constants.d.ts +1 -3
  16. package/lib/cjs/constants.d.ts.map +1 -1
  17. package/lib/cjs/constants.js +2 -5
  18. package/lib/cjs/constants.js.map +1 -1
  19. package/lib/cjs/data-extractor.d.ts +0 -1
  20. package/lib/cjs/data-extractor.d.ts.map +1 -1
  21. package/lib/cjs/data-extractor.js +3 -29
  22. package/lib/cjs/data-extractor.js.map +1 -1
  23. package/lib/cjs/frustration-plugin.d.ts.map +1 -1
  24. package/lib/cjs/frustration-plugin.js +3 -5
  25. package/lib/cjs/frustration-plugin.js.map +1 -1
  26. package/lib/cjs/hierarchy.js +2 -2
  27. package/lib/cjs/hierarchy.js.map +1 -1
  28. package/lib/cjs/libs/finder.d.ts +13 -0
  29. package/lib/cjs/libs/finder.d.ts.map +1 -0
  30. package/lib/cjs/libs/finder.js +348 -0
  31. package/lib/cjs/libs/finder.js.map +1 -0
  32. package/lib/cjs/observables.d.ts +3 -4
  33. package/lib/cjs/observables.d.ts.map +1 -1
  34. package/lib/cjs/observables.js +5 -8
  35. package/lib/cjs/observables.js.map +1 -1
  36. package/lib/cjs/version.d.ts +1 -1
  37. package/lib/cjs/version.d.ts.map +1 -1
  38. package/lib/cjs/version.js +1 -1
  39. package/lib/cjs/version.js.map +1 -1
  40. package/lib/esm/autocapture/track-action-click.d.ts.map +1 -1
  41. package/lib/esm/autocapture/track-action-click.js +3 -6
  42. package/lib/esm/autocapture/track-action-click.js.map +1 -1
  43. package/lib/esm/autocapture/track-click.d.ts.map +1 -1
  44. package/lib/esm/autocapture/track-click.js +4 -3
  45. package/lib/esm/autocapture/track-click.js.map +1 -1
  46. package/lib/esm/autocapture/track-rage-click.d.ts +1 -1
  47. package/lib/esm/autocapture/track-rage-click.d.ts.map +1 -1
  48. package/lib/esm/autocapture/track-rage-click.js +0 -5
  49. package/lib/esm/autocapture/track-rage-click.js.map +1 -1
  50. package/lib/esm/autocapture-plugin.d.ts +4 -7
  51. package/lib/esm/autocapture-plugin.d.ts.map +1 -1
  52. package/lib/esm/autocapture-plugin.js +8 -11
  53. package/lib/esm/autocapture-plugin.js.map +1 -1
  54. package/lib/esm/constants.d.ts +1 -3
  55. package/lib/esm/constants.d.ts.map +1 -1
  56. package/lib/esm/constants.js +1 -4
  57. package/lib/esm/constants.js.map +1 -1
  58. package/lib/esm/data-extractor.d.ts +0 -1
  59. package/lib/esm/data-extractor.d.ts.map +1 -1
  60. package/lib/esm/data-extractor.js +3 -29
  61. package/lib/esm/data-extractor.js.map +1 -1
  62. package/lib/esm/frustration-plugin.d.ts.map +1 -1
  63. package/lib/esm/frustration-plugin.js +4 -6
  64. package/lib/esm/frustration-plugin.js.map +1 -1
  65. package/lib/esm/hierarchy.js +2 -2
  66. package/lib/esm/hierarchy.js.map +1 -1
  67. package/lib/esm/libs/finder.d.ts +13 -0
  68. package/lib/esm/libs/finder.d.ts.map +1 -0
  69. package/lib/esm/libs/finder.js +344 -0
  70. package/lib/esm/libs/finder.js.map +1 -0
  71. package/lib/esm/observables.d.ts +3 -4
  72. package/lib/esm/observables.d.ts.map +1 -1
  73. package/lib/esm/observables.js +5 -8
  74. package/lib/esm/observables.js.map +1 -1
  75. package/lib/esm/version.d.ts +1 -1
  76. package/lib/esm/version.d.ts.map +1 -1
  77. package/lib/esm/version.js +1 -1
  78. package/lib/esm/version.js.map +1 -1
  79. package/lib/scripts/amplitude-min.js +1 -1
  80. package/lib/scripts/amplitude-min.js.gz +0 -0
  81. package/lib/scripts/amplitude-min.js.map +1 -1
  82. package/lib/scripts/amplitude-min.umd.js +1 -1
  83. package/lib/scripts/amplitude-min.umd.js.gz +0 -0
  84. package/lib/scripts/autocapture/track-action-click.d.ts.map +1 -1
  85. package/lib/scripts/autocapture/track-click.d.ts.map +1 -1
  86. package/lib/scripts/autocapture/track-rage-click.d.ts +1 -1
  87. package/lib/scripts/autocapture/track-rage-click.d.ts.map +1 -1
  88. package/lib/scripts/autocapture-plugin.d.ts +4 -7
  89. package/lib/scripts/autocapture-plugin.d.ts.map +1 -1
  90. package/lib/scripts/constants.d.ts +1 -3
  91. package/lib/scripts/constants.d.ts.map +1 -1
  92. package/lib/scripts/data-extractor.d.ts +0 -1
  93. package/lib/scripts/data-extractor.d.ts.map +1 -1
  94. package/lib/scripts/frustration-plugin.d.ts.map +1 -1
  95. package/lib/scripts/libs/finder.d.ts +13 -0
  96. package/lib/scripts/libs/finder.d.ts.map +1 -0
  97. package/lib/scripts/observables.d.ts +3 -4
  98. package/lib/scripts/observables.d.ts.map +1 -1
  99. package/lib/scripts/version.d.ts +1 -1
  100. package/lib/scripts/version.d.ts.map +1 -1
  101. package/package.json +4 -3
  102. package/lib/cjs/libs/element-path.d.ts +0 -2
  103. package/lib/cjs/libs/element-path.d.ts.map +0 -1
  104. package/lib/cjs/libs/element-path.js +0 -178
  105. package/lib/cjs/libs/element-path.js.map +0 -1
  106. package/lib/esm/libs/element-path.d.ts +0 -2
  107. package/lib/esm/libs/element-path.d.ts.map +0 -1
  108. package/lib/esm/libs/element-path.js +0 -174
  109. package/lib/esm/libs/element-path.js.map +0 -1
  110. package/lib/scripts/libs/element-path.d.ts +0 -2
  111. package/lib/scripts/libs/element-path.d.ts.map +0 -1
@@ -1,9 +1,8 @@
1
- import { Observable as ZenObservable } from '@amplitude/analytics-core';
2
- export declare const createMutationObservableZen: () => ZenObservable<MutationRecord[]>;
1
+ import { Observable } from '@amplitude/analytics-core';
2
+ export declare const createMutationObservable: () => Observable<MutationRecord[]>;
3
3
  /**
4
4
  * Creates an observable that tracks click events on the document.
5
- * TODO: This should eventually be renamed to just "createClickObservable" and replace RxJS version
6
5
  * @param clickType - The type of click event to track (click or pointerdown)
7
6
  */
8
- export declare const createClickObservableZen: (clickType?: 'click' | 'pointerdown') => ZenObservable<MouseEvent | PointerEvent>;
7
+ export declare const createClickObservable: (clickType?: 'click' | 'pointerdown') => Observable<MouseEvent | PointerEvent>;
9
8
  //# sourceMappingURL=observables.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"observables.d.ts","sourceRoot":"","sources":["../../src/observables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,aAAa,EAAkB,MAAM,2BAA2B,CAAC;AAExF,eAAO,MAAM,2BAA2B,QAAO,cAAc,cAAc,EAAE,CAe5E,CAAC;AAEF;;;;GAIG;AAGH,eAAO,MAAM,wBAAwB,eACxB,OAAO,GAAG,aAAa,KACjC,cAAc,UAAU,GAAG,YAAY,CAYzC,CAAC"}
1
+ {"version":3,"file":"observables.d.ts","sourceRoot":"","sources":["../../src/observables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAkB,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,wBAAwB,QAAO,WAAW,cAAc,EAAE,CAetE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,eACrB,OAAO,GAAG,aAAa,KACjC,WAAW,UAAU,GAAG,YAAY,CAYtC,CAAC"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createClickObservableZen = exports.createMutationObservableZen = void 0;
3
+ exports.createClickObservable = exports.createMutationObservable = void 0;
4
4
  var analytics_core_1 = require("@amplitude/analytics-core");
5
- var createMutationObservableZen = function () {
5
+ var createMutationObservable = function () {
6
6
  return new analytics_core_1.Observable(function (observer) {
7
7
  var mutationObserver = new MutationObserver(function (mutations) {
8
8
  observer.next(mutations);
@@ -18,15 +18,12 @@ var createMutationObservableZen = function () {
18
18
  return function () { return mutationObserver.disconnect(); };
19
19
  });
20
20
  };
21
- exports.createMutationObservableZen = createMutationObservableZen;
21
+ exports.createMutationObservable = createMutationObservable;
22
22
  /**
23
23
  * Creates an observable that tracks click events on the document.
24
- * TODO: This should eventually be renamed to just "createClickObservable" and replace RxJS version
25
24
  * @param clickType - The type of click event to track (click or pointerdown)
26
25
  */
27
- // TODO: once we're ready for ZenObservable, remove this ignore and add tests
28
- /* istanbul ignore next */
29
- var createClickObservableZen = function (clickType) {
26
+ var createClickObservable = function (clickType) {
30
27
  if (clickType === void 0) { clickType = 'click'; }
31
28
  return new analytics_core_1.Observable(function (observer) {
32
29
  var _a;
@@ -42,5 +39,5 @@ var createClickObservableZen = function (clickType) {
42
39
  };
43
40
  });
44
41
  };
45
- exports.createClickObservableZen = createClickObservableZen;
42
+ exports.createClickObservable = createClickObservable;
46
43
  //# sourceMappingURL=observables.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"observables.js","sourceRoot":"","sources":["../../src/observables.ts"],"names":[],"mappings":";;;AAAA,4DAAwF;AAEjF,IAAM,2BAA2B,GAAG;IACzC,OAAO,IAAI,2BAAa,CAAmB,UAAC,QAAQ;QAClD,IAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,UAAC,SAAS;YACtD,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,IAAI,EAAE;YACjB,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;gBACtC,SAAS,EAAE,IAAI;gBACf,UAAU,EAAE,IAAI;gBAChB,aAAa,EAAE,IAAI;gBACnB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;SACJ;QACD,OAAO,cAAM,OAAA,gBAAgB,CAAC,UAAU,EAAE,EAA7B,CAA6B,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAfW,QAAA,2BAA2B,+BAetC;AAEF;;;;GAIG;AACH,6EAA6E;AAC7E,0BAA0B;AACnB,IAAM,wBAAwB,GAAG,UACtC,SAA4C;IAA5C,0BAAA,EAAA,mBAA4C;IAE5C,OAAO,IAAI,2BAAa,CAA4B,UAAC,QAAQ;;QAC3D,IAAM,OAAO,GAAG,UAAC,KAAgC;YAC/C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,CAAC;QACF,0BAA0B;QAC1B,MAAA,IAAA,+BAAc,GAAE,0CAAE,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACnF,OAAO;;YACL,0BAA0B;YAC1B,MAAA,IAAA,+BAAc,GAAE,0CAAE,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACxF,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAdW,QAAA,wBAAwB,4BAcnC","sourcesContent":["import { Observable as ZenObservable, getGlobalScope } from '@amplitude/analytics-core';\n\nexport const createMutationObservableZen = (): ZenObservable<MutationRecord[]> => {\n return new ZenObservable<MutationRecord[]>((observer) => {\n const mutationObserver = new MutationObserver((mutations) => {\n observer.next(mutations);\n });\n if (document.body) {\n mutationObserver.observe(document.body, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true,\n });\n }\n return () => mutationObserver.disconnect();\n });\n};\n\n/**\n * Creates an observable that tracks click events on the document.\n * TODO: This should eventually be renamed to just \"createClickObservable\" and replace RxJS version\n * @param clickType - The type of click event to track (click or pointerdown)\n */\n// TODO: once we're ready for ZenObservable, remove this ignore and add tests\n/* istanbul ignore next */\nexport const createClickObservableZen = (\n clickType: 'click' | 'pointerdown' = 'click',\n): ZenObservable<MouseEvent | PointerEvent> => {\n return new ZenObservable<MouseEvent | PointerEvent>((observer) => {\n const handler = (event: MouseEvent | PointerEvent) => {\n observer.next(event);\n };\n /* istanbul ignore next */\n getGlobalScope()?.document.addEventListener(clickType, handler, { capture: true });\n return () => {\n /* istanbul ignore next */\n getGlobalScope()?.document.removeEventListener(clickType, handler, { capture: true });\n };\n });\n};\n"]}
1
+ {"version":3,"file":"observables.js","sourceRoot":"","sources":["../../src/observables.ts"],"names":[],"mappings":";;;AAAA,4DAAuE;AAEhE,IAAM,wBAAwB,GAAG;IACtC,OAAO,IAAI,2BAAU,CAAmB,UAAC,QAAQ;QAC/C,IAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,UAAC,SAAS;YACtD,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,IAAI,EAAE;YACjB,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;gBACtC,SAAS,EAAE,IAAI;gBACf,UAAU,EAAE,IAAI;gBAChB,aAAa,EAAE,IAAI;gBACnB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;SACJ;QACD,OAAO,cAAM,OAAA,gBAAgB,CAAC,UAAU,EAAE,EAA7B,CAA6B,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAfW,QAAA,wBAAwB,4BAenC;AAEF;;;GAGG;AACI,IAAM,qBAAqB,GAAG,UACnC,SAA4C;IAA5C,0BAAA,EAAA,mBAA4C;IAE5C,OAAO,IAAI,2BAAU,CAA4B,UAAC,QAAQ;;QACxD,IAAM,OAAO,GAAG,UAAC,KAAgC;YAC/C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,CAAC;QACF,0BAA0B;QAC1B,MAAA,IAAA,+BAAc,GAAE,0CAAE,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACnF,OAAO;;YACL,0BAA0B;YAC1B,MAAA,IAAA,+BAAc,GAAE,0CAAE,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACxF,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAdW,QAAA,qBAAqB,yBAchC","sourcesContent":["import { Observable, getGlobalScope } from '@amplitude/analytics-core';\n\nexport const createMutationObservable = (): Observable<MutationRecord[]> => {\n return new Observable<MutationRecord[]>((observer) => {\n const mutationObserver = new MutationObserver((mutations) => {\n observer.next(mutations);\n });\n if (document.body) {\n mutationObserver.observe(document.body, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true,\n });\n }\n return () => mutationObserver.disconnect();\n });\n};\n\n/**\n * Creates an observable that tracks click events on the document.\n * @param clickType - The type of click event to track (click or pointerdown)\n */\nexport const createClickObservable = (\n clickType: 'click' | 'pointerdown' = 'click',\n): Observable<MouseEvent | PointerEvent> => {\n return new Observable<MouseEvent | PointerEvent>((observer) => {\n const handler = (event: MouseEvent | PointerEvent) => {\n observer.next(event);\n };\n /* istanbul ignore next */\n getGlobalScope()?.document.addEventListener(clickType, handler, { capture: true });\n return () => {\n /* istanbul ignore next */\n getGlobalScope()?.document.removeEventListener(clickType, handler, { capture: true });\n };\n });\n};\n"]}
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "1.18.0-zen-plus-zoning.2";
1
+ export declare const VERSION = "1.18.1";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,6BAA6B,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,WAAW,CAAC"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = '1.18.0-zen-plus-zoning.2';
4
+ exports.VERSION = '1.18.1';
5
5
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,0BAA0B,CAAC","sourcesContent":["export const VERSION = '1.18.0-zen-plus-zoning.2';\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,QAAQ,CAAC","sourcesContent":["export const VERSION = '1.18.1';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"track-action-click.d.ts","sourceRoot":"","sources":["../../../src/autocapture/track-action-click.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AAC9F,OAAO,EAAE,aAAa,EAAE,UAAU,EAAmB,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAIL,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAGpB,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,cAAc,EACd,OAAO,EACP,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,GACvB,EAAE;IACD,SAAS,EAAE,aAAa,CAAC;IACzB,cAAc,EAAE,oBAAoB,CAAC;IACrC,OAAO,EAAE,8BAA8B,CAAC;IACxC,kBAAkB,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtF,sBAAsB,EAAE,gBAAgB,CAAC;IACzC,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,8BAqEA"}
1
+ {"version":3,"file":"track-action-click.d.ts","sourceRoot":"","sources":["../../../src/autocapture/track-action-click.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AAC9F,OAAO,EAAE,aAAa,EAAE,UAAU,EAAmB,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAIL,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAGpB,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,cAAc,EACd,OAAO,EACP,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,GACvB,EAAE;IACD,SAAS,EAAE,aAAa,CAAC;IACzB,cAAc,EAAE,oBAAoB,CAAC;IACrC,OAAO,EAAE,8BAA8B,CAAC;IACxC,kBAAkB,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtF,sBAAsB,EAAE,gBAAgB,CAAC;IACzC,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,8BAkEA"}
@@ -3,8 +3,8 @@ import { filterOutNonTrackableEvents, getClosestElement, } from '../helpers';
3
3
  import { AMPLITUDE_ELEMENT_CLICKED_EVENT } from '../constants';
4
4
  export function trackActionClick(_a) {
5
5
  var amplitude = _a.amplitude, allObservables = _a.allObservables, options = _a.options, getEventProperties = _a.getEventProperties, shouldTrackEvent = _a.shouldTrackEvent, shouldTrackActionClick = _a.shouldTrackActionClick;
6
- var clickObservableZen = allObservables.clickObservableZen, mutationObservableZen = allObservables.mutationObservableZen, navigateObservableZen = allObservables.navigateObservableZen;
7
- var filteredClickObservable = clickObservableZen
6
+ var clickObservable = allObservables.clickObservable, mutationObservable = allObservables.mutationObservable, navigateObservable = allObservables.navigateObservable;
7
+ var filteredClickObservable = clickObservable
8
8
  .filter(function (click) {
9
9
  return !shouldTrackEvent('click', click.closestTrackedAncestor);
10
10
  })
@@ -23,9 +23,7 @@ export function trackActionClick(_a) {
23
23
  // Only track change on elements that should be tracked
24
24
  return shouldTrackActionClick('click', clickEvent.closestTrackedAncestor);
25
25
  });
26
- var mutationOrNavigate = navigateObservableZen
27
- ? merge(mutationObservableZen, navigateObservableZen)
28
- : mutationObservableZen;
26
+ var mutationOrNavigate = navigateObservable ? merge(mutationObservable, navigateObservable) : mutationObservable;
29
27
  var clickMutationNavigateObservable = merge(filteredClickObservable, mutationOrNavigate);
30
28
  var actionClickTimer = null;
31
29
  var lastClickEvent = null;
@@ -42,7 +40,6 @@ export function trackActionClick(_a) {
42
40
  actionClickTimer = setTimeout(function () {
43
41
  actionClickTimer = null;
44
42
  lastClickEvent = null;
45
- return null;
46
43
  }, 500);
47
44
  return Promise.resolve(null);
48
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"track-action-click.js","sourceRoot":"","sources":["../../../src/autocapture/track-action-click.ts"],"names":[],"mappings":"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","sourcesContent":["import { AllWindowObservables, AutoCaptureOptionsWithDefaults } from 'src/autocapture-plugin';\nimport { BrowserClient, ActionType, merge, asyncMap } from '@amplitude/analytics-core';\nimport {\n ElementBasedTimestampedEvent,\n filterOutNonTrackableEvents,\n getClosestElement,\n shouldTrackEvent,\n TimestampedEvent,\n} from '../helpers';\nimport { AMPLITUDE_ELEMENT_CLICKED_EVENT } from '../constants';\n\nexport function trackActionClick({\n amplitude,\n allObservables,\n options,\n getEventProperties,\n shouldTrackEvent,\n shouldTrackActionClick,\n}: {\n amplitude: BrowserClient;\n allObservables: AllWindowObservables;\n options: AutoCaptureOptionsWithDefaults;\n getEventProperties: (actionType: ActionType, element: Element) => Record<string, any>;\n shouldTrackActionClick: shouldTrackEvent;\n shouldTrackEvent: shouldTrackEvent;\n}) {\n const { clickObservableZen, mutationObservableZen, navigateObservableZen } = allObservables;\n\n const filteredClickObservable = clickObservableZen\n .filter((click) => {\n return !shouldTrackEvent('click', click.closestTrackedAncestor);\n })\n .map((click) => {\n // overwrite the closestTrackedAncestor with the closest element that is on the actionClickAllowlist\n const closestActionClickEl = getClosestElement(click.event.target as Element, options.actionClickAllowlist);\n click.closestTrackedAncestor = closestActionClickEl as Element;\n\n // overwrite the targetElementProperties with the properties of the closestActionClickEl\n if (click.closestTrackedAncestor !== null) {\n click.targetElementProperties = getEventProperties(click.type, click.closestTrackedAncestor);\n }\n return click;\n })\n .filter(filterOutNonTrackableEvents)\n .filter((clickEvent) => {\n // Only track change on elements that should be tracked\n return shouldTrackActionClick('click', clickEvent.closestTrackedAncestor);\n });\n\n const mutationOrNavigate = navigateObservableZen\n ? merge(mutationObservableZen, navigateObservableZen)\n : mutationObservableZen;\n\n const clickMutationNavigateObservable = merge(filteredClickObservable, mutationOrNavigate);\n\n let actionClickTimer: ReturnType<typeof setTimeout> | null = null;\n let lastClickEvent: TimestampedEvent<any> | null = null;\n\n const actionClickObservable = asyncMap(clickMutationNavigateObservable, (event) => {\n // clear any previous timer\n if (actionClickTimer) {\n clearTimeout(actionClickTimer);\n actionClickTimer = null;\n }\n if (event.type === 'click') {\n // mark the 'last click event'\n lastClickEvent = event;\n\n // set a timer to clear last click event if no mutation event between now and 500ms\n actionClickTimer = setTimeout(() => {\n actionClickTimer = null;\n lastClickEvent = null;\n return null;\n }, 500);\n return Promise.resolve(null);\n } else {\n // if mutation/navigation + last click event, then it's an action click\n if (lastClickEvent) {\n const event = lastClickEvent;\n lastClickEvent = null;\n return Promise.resolve(event);\n }\n }\n return Promise.resolve(null);\n });\n\n return actionClickObservable.subscribe((actionClick) => {\n if (!actionClick) return;\n /* istanbul ignore next */\n amplitude?.track(\n AMPLITUDE_ELEMENT_CLICKED_EVENT,\n getEventProperties('click', (actionClick as ElementBasedTimestampedEvent<MouseEvent>).closestTrackedAncestor),\n );\n });\n}\n"]}
1
+ {"version":3,"file":"track-action-click.js","sourceRoot":"","sources":["../../../src/autocapture/track-action-click.ts"],"names":[],"mappings":"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","sourcesContent":["import { AllWindowObservables, AutoCaptureOptionsWithDefaults } from 'src/autocapture-plugin';\nimport { BrowserClient, ActionType, merge, asyncMap } from '@amplitude/analytics-core';\nimport {\n ElementBasedTimestampedEvent,\n filterOutNonTrackableEvents,\n getClosestElement,\n shouldTrackEvent,\n TimestampedEvent,\n} from '../helpers';\nimport { AMPLITUDE_ELEMENT_CLICKED_EVENT } from '../constants';\n\nexport function trackActionClick({\n amplitude,\n allObservables,\n options,\n getEventProperties,\n shouldTrackEvent,\n shouldTrackActionClick,\n}: {\n amplitude: BrowserClient;\n allObservables: AllWindowObservables;\n options: AutoCaptureOptionsWithDefaults;\n getEventProperties: (actionType: ActionType, element: Element) => Record<string, any>;\n shouldTrackActionClick: shouldTrackEvent;\n shouldTrackEvent: shouldTrackEvent;\n}) {\n const { clickObservable, mutationObservable, navigateObservable } = allObservables;\n\n const filteredClickObservable = clickObservable\n .filter((click) => {\n return !shouldTrackEvent('click', click.closestTrackedAncestor);\n })\n .map((click) => {\n // overwrite the closestTrackedAncestor with the closest element that is on the actionClickAllowlist\n const closestActionClickEl = getClosestElement(click.event.target as Element, options.actionClickAllowlist);\n click.closestTrackedAncestor = closestActionClickEl as Element;\n\n // overwrite the targetElementProperties with the properties of the closestActionClickEl\n if (click.closestTrackedAncestor !== null) {\n click.targetElementProperties = getEventProperties(click.type, click.closestTrackedAncestor);\n }\n return click;\n })\n .filter(filterOutNonTrackableEvents)\n .filter((clickEvent) => {\n // Only track change on elements that should be tracked\n return shouldTrackActionClick('click', clickEvent.closestTrackedAncestor);\n });\n\n const mutationOrNavigate = navigateObservable ? merge(mutationObservable, navigateObservable) : mutationObservable;\n\n const clickMutationNavigateObservable = merge(filteredClickObservable, mutationOrNavigate);\n\n let actionClickTimer: ReturnType<typeof setTimeout> | null = null;\n let lastClickEvent: TimestampedEvent<any> | null = null;\n\n const actionClickObservable = asyncMap(clickMutationNavigateObservable, (event) => {\n // clear any previous timer\n if (actionClickTimer) {\n clearTimeout(actionClickTimer);\n actionClickTimer = null;\n }\n if (event.type === 'click') {\n // mark the 'last click event'\n lastClickEvent = event;\n\n // set a timer to clear last click event if no mutation event between now and 500ms\n actionClickTimer = setTimeout(() => {\n actionClickTimer = null;\n lastClickEvent = null;\n }, 500);\n return Promise.resolve(null);\n } else {\n // if mutation/navigation + last click event, then it's an action click\n if (lastClickEvent) {\n const event = lastClickEvent;\n lastClickEvent = null;\n return Promise.resolve(event);\n }\n }\n return Promise.resolve(null);\n });\n\n return actionClickObservable.subscribe((actionClick) => {\n if (!actionClick) return;\n /* istanbul ignore next */\n amplitude?.track(\n AMPLITUDE_ELEMENT_CLICKED_EVENT,\n getEventProperties('click', (actionClick as ElementBasedTimestampedEvent<MouseEvent>).closestTrackedAncestor),\n );\n });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"track-click.d.ts","sourceRoot":"","sources":["../../../src/autocapture/track-click.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAA+B,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG3E,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,gBAAgB,GACjB,EAAE;IACD,SAAS,EAAE,aAAa,CAAC;IACzB,cAAc,EAAE,oBAAoB,CAAC;IACrC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,gBAAgB,EAAE,kBAAkB,CAAC;CACtC,8BAeA"}
1
+ {"version":3,"file":"track-click.d.ts","sourceRoot":"","sources":["../../../src/autocapture/track-click.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAc,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAA+B,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG3E,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,gBAAgB,GACjB,EAAE;IACD,SAAS,EAAE,aAAa,CAAC;IACzB,cAAc,EAAE,oBAAoB,CAAC;IACrC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,gBAAgB,EAAE,kBAAkB,CAAC;CACtC,8BAkBA"}
@@ -2,15 +2,16 @@ import { filterOutNonTrackableEvents } from '../helpers';
2
2
  import { AMPLITUDE_ELEMENT_CLICKED_EVENT } from '../constants';
3
3
  export function trackClicks(_a) {
4
4
  var amplitude = _a.amplitude, allObservables = _a.allObservables, shouldTrackEvent = _a.shouldTrackEvent, evaluateTriggers = _a.evaluateTriggers;
5
- var clickObservableZen = allObservables.clickObservableZen;
6
- var clickObservableFiltered = clickObservableZen
5
+ var clickObservable = allObservables.clickObservable;
6
+ var clickObservableFiltered = clickObservable
7
7
  .filter(filterOutNonTrackableEvents)
8
8
  .filter(function (click) {
9
9
  // Only track clicks on elements that should be tracked,
10
10
  return shouldTrackEvent('click', click.closestTrackedAncestor);
11
11
  })
12
12
  .map(function (click) { return evaluateTriggers(click); });
13
- return clickObservableFiltered.subscribe(function (click) {
13
+ var clicks = clickObservableFiltered;
14
+ return clicks.subscribe(function (click) {
14
15
  /* istanbul ignore next */
15
16
  amplitude === null || amplitude === void 0 ? void 0 : amplitude.track(AMPLITUDE_ELEMENT_CLICKED_EVENT, click.targetElementProperties);
16
17
  });
@@ -1 +1 @@
1
- {"version":3,"file":"track-click.js","sourceRoot":"","sources":["../../../src/autocapture/track-click.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,2BAA2B,EAAoB,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC;AAE/D,MAAM,UAAU,WAAW,CAAC,EAU3B;QATC,SAAS,eAAA,EACT,cAAc,oBAAA,EACd,gBAAgB,sBAAA,EAChB,gBAAgB,sBAAA;IAOR,IAAA,kBAAkB,GAAK,cAAc,mBAAnB,CAAoB;IAE9C,IAAM,uBAAuB,GAAG,kBAAkB;SAC/C,MAAM,CAAC,2BAA2B,CAAC;SACnC,MAAM,CAAC,UAAC,KAAK;QACZ,wDAAwD;QACxD,OAAO,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACjE,CAAC,CAAC;SACD,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA,gBAAgB,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC,CAAC;IAE3C,OAAO,uBAAuB,CAAC,SAAS,CAAC,UAAC,KAAK;QAC7C,0BAA0B;QAC1B,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { AllWindowObservables } from 'src/autocapture-plugin';\nimport { type evaluateTriggersFn } from 'src/helpers';\nimport { BrowserClient } from '@amplitude/analytics-core';\nimport { filterOutNonTrackableEvents, shouldTrackEvent } from '../helpers';\nimport { AMPLITUDE_ELEMENT_CLICKED_EVENT } from '../constants';\n\nexport function trackClicks({\n amplitude,\n allObservables,\n shouldTrackEvent,\n evaluateTriggers,\n}: {\n amplitude: BrowserClient;\n allObservables: AllWindowObservables;\n shouldTrackEvent: shouldTrackEvent;\n evaluateTriggers: evaluateTriggersFn;\n}) {\n const { clickObservableZen } = allObservables;\n\n const clickObservableFiltered = clickObservableZen\n .filter(filterOutNonTrackableEvents)\n .filter((click) => {\n // Only track clicks on elements that should be tracked,\n return shouldTrackEvent('click', click.closestTrackedAncestor);\n })\n .map((click) => evaluateTriggers(click));\n\n return clickObservableFiltered.subscribe((click) => {\n /* istanbul ignore next */\n amplitude?.track(AMPLITUDE_ELEMENT_CLICKED_EVENT, click.targetElementProperties);\n });\n}\n"]}
1
+ {"version":3,"file":"track-click.js","sourceRoot":"","sources":["../../../src/autocapture/track-click.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,2BAA2B,EAAoB,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC;AAE/D,MAAM,UAAU,WAAW,CAAC,EAU3B;QATC,SAAS,eAAA,EACT,cAAc,oBAAA,EACd,gBAAgB,sBAAA,EAChB,gBAAgB,sBAAA;IAOR,IAAA,eAAe,GAAK,cAAc,gBAAnB,CAAoB;IAE3C,IAAM,uBAAuB,GAAG,eAAe;SAC5C,MAAM,CAAC,2BAA2B,CAAC;SACnC,MAAM,CAAC,UAAC,KAAK;QACZ,wDAAwD;QACxD,OAAO,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACjE,CAAC,CAAC;SACD,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA,gBAAgB,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC,CAAC;IAE3C,IAAM,MAAM,GACV,uBAAuB,CAAC;IAE1B,OAAO,MAAM,CAAC,SAAS,CAAC,UAAC,KAAK;QAC5B,0BAA0B;QAC1B,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { AllWindowObservables } from 'src/autocapture-plugin';\nimport { type evaluateTriggersFn } from 'src/helpers';\nimport { Observable, BrowserClient } from '@amplitude/analytics-core';\nimport { filterOutNonTrackableEvents, shouldTrackEvent } from '../helpers';\nimport { AMPLITUDE_ELEMENT_CLICKED_EVENT } from '../constants';\n\nexport function trackClicks({\n amplitude,\n allObservables,\n shouldTrackEvent,\n evaluateTriggers,\n}: {\n amplitude: BrowserClient;\n allObservables: AllWindowObservables;\n shouldTrackEvent: shouldTrackEvent;\n evaluateTriggers: evaluateTriggersFn;\n}) {\n const { clickObservable } = allObservables;\n\n const clickObservableFiltered = clickObservable\n .filter(filterOutNonTrackableEvents)\n .filter((click) => {\n // Only track clicks on elements that should be tracked,\n return shouldTrackEvent('click', click.closestTrackedAncestor);\n })\n .map((click) => evaluateTriggers(click));\n\n const clicks: Observable<typeof clickObservableFiltered extends Observable<infer U> ? U : never> =\n clickObservableFiltered;\n\n return clicks.subscribe((click) => {\n /* istanbul ignore next */\n amplitude?.track(AMPLITUDE_ELEMENT_CLICKED_EVENT, click.targetElementProperties);\n });\n}\n"]}
@@ -5,5 +5,5 @@ export declare function trackRageClicks({ amplitude, allObservables, shouldTrack
5
5
  amplitude: BrowserClient;
6
6
  allObservables: AllWindowObservables;
7
7
  shouldTrackRageClick: shouldTrackEvent;
8
- }): ZenObservable.Subscription | undefined;
8
+ }): ZenObservable.Subscription;
9
9
  //# sourceMappingURL=track-rage-click.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"track-rage-click.d.ts","sourceRoot":"","sources":["../../../src/autocapture/track-rage-click.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EACL,aAAa,EAKd,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAyF9C,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,cAAc,EACd,oBAAoB,GACrB,EAAE;IACD,SAAS,EAAE,aAAa,CAAC;IACzB,cAAc,EAAE,oBAAoB,CAAC;IACrC,oBAAoB,EAAE,gBAAgB,CAAC;CACxC,0CA8FA"}
1
+ {"version":3,"file":"track-rage-click.d.ts","sourceRoot":"","sources":["../../../src/autocapture/track-rage-click.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EACL,aAAa,EAKd,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAyF9C,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,cAAc,EACd,oBAAoB,GACrB,EAAE;IACD,SAAS,EAAE,aAAa,CAAC;IACzB,cAAc,EAAE,oBAAoB,CAAC;IACrC,oBAAoB,EAAE,gBAAgB,CAAC;CACxC,8BAwFA"}
@@ -42,11 +42,6 @@ export function trackRageClicks(_a) {
42
42
  var _this = this;
43
43
  var amplitude = _a.amplitude, allObservables = _a.allObservables, shouldTrackRageClick = _a.shouldTrackRageClick;
44
44
  var clickObservable = allObservables.clickObservable;
45
- // TODO: take this out once it becomes a non-optional parameter
46
- /* istanbul ignore if */
47
- if (!clickObservable) {
48
- return;
49
- }
50
45
  // Keep track of all clicks within the sliding window
51
46
  var clickWindow = [];
52
47
  // Keep track of the region box for all clicks, to determine when a rage click is out of bounds
@@ -1 +1 @@
1
- {"version":3,"file":"track-rage-click.js","sourceRoot":"","sources":["../../../src/autocapture/track-rage-click.ts"],"names":[],"mappings":";AACA,OAAO,EAEL,QAAQ,EACR,4BAA4B,EAC5B,4BAA4B,EAC5B,0CAA0C,GAC3C,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,oCAAoC,EAAE,MAAM,cAAc,CAAC;AAEpE,IAAM,oBAAoB,GAAG,4BAA4B,CAAC;AAC1D,IAAM,oBAAoB,GAAG,4BAA4B,CAAC;AAC1D,IAAM,kCAAkC,GAAG,0CAA0C,CAAC;AAoCtF,SAAS,cAAc,CAAC,SAAiC,EAAE,KAAiB;;IACpE,IAAA,KAAuB,KAAK,CAAC,KAAmB,EAA9C,OAAO,aAAA,EAAE,OAAO,aAA8B,CAAC;IACvD,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAA,SAAS,CAAC,IAAI,mCAAI,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9D,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAA,SAAS,CAAC,IAAI,mCAAI,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9D,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAA,SAAS,CAAC,IAAI,mCAAI,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9D,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAA,SAAS,CAAC,IAAI,mCAAI,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9D,SAAS,CAAC,aAAa;QACrB,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,GAAG,kCAAkC;YACpE,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,GAAG,kCAAkC,CAAC;AACzE,CAAC;AAED,SAAS,0BAA0B,CAAC,WAAyB;IAC3D,wBAAwB;IACxB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;QAC5B,OAAO,IAAI,CAAC;KACb;IACD,IAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAClC,IAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEtD,IAAM,cAAc,cAClB,wBAAwB,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EACtE,sBAAsB,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EACnE,sBAAsB,EAAE,SAAS,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,EAClE,oBAAoB,EAAE,WAAW,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA,CAAC;YAChD,CAAC,EAAG,KAAK,CAAC,KAAoB,CAAC,OAAO;YACtC,CAAC,EAAG,KAAK,CAAC,KAAoB,CAAC,OAAO;YACtC,IAAI,EAAE,KAAK,CAAC,SAAS;SACtB,CAAC,EAJ+C,CAI/C,CAAC,EACH,yBAAyB,EAAE,WAAW,CAAC,MAAM,IAC1C,UAAU,CAAC,uBAAuB,CACtC,CAAC;IAEF,OAAO,EAAE,cAAc,gBAAA,EAAE,IAAI,EAAE,UAAU,CAAC,SAAS,EAAE,CAAC;AACxD,CAAC;AAED,SAAS,6BAA6B,CAAC,WAAyB,EAAE,KAAiB;IACjF,IAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,oBAAoB,GAAG,CAAC,CAAC,CAAC;IAC9E,IAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,IAAI,oBAAoB,CAAC;AACxE,CAAC;AAED,SAAS,YAAY,CAAC,WAAyB,EAAE,KAAiB;IAChE,OAAO,CACL,WAAW,CAAC,MAAM,GAAG,CAAC;QACtB,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,sBAAsB,KAAK,KAAK,CAAC,sBAAsB,CAC5F,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAQ/B;IARD,iBAsGC;QArGC,SAAS,eAAA,EACT,cAAc,oBAAA,EACd,oBAAoB,0BAAA;IAMZ,IAAA,eAAe,GAA2B,cAAc,gBAAzC,CAA0C;IAEjE,+DAA+D;IAC/D,wBAAwB;IACxB,IAAI,CAAC,eAAe,EAAE;QACpB,OAAO;KACR;IAED,qDAAqD;IACrD,IAAI,WAAW,GAAiB,EAAE,CAAC;IAEnC,+FAA+F;IAC/F,IAAI,gBAAgB,GAA2B,EAAE,CAAC;IAElD,IAAI,gBAAgB,GAIT,IAAI,CAAC;IAEhB,2DAA2D;IAC3D,SAAS,gBAAgB,CAAC,KAAkB;QAC1C,WAAW,GAAG,EAAE,CAAC;QACjB,gBAAgB,GAAG,EAAE,CAAC;QACtB,IAAI,KAAK,EAAE;YACT,cAAc,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;YACxC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACzB;IACH,CAAC;IAED,IAAM,mBAAmB,GAAG,QAAQ,CAClC,eAAe,CAAC,MAAM,CAAC,UAAC,KAAK,IAAK,OAAA,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,sBAAsB,CAAC,EAA3D,CAA2D,CAAC,EAC9F,UAAO,KAAiB;;;YACtB,mDAAmD;YACnD,cAAc,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;YAEpC,eAAe,GAA0B,IAAI,CAAC;YAElD,uBAAuB;YACvB,gCAAgC;YAChC,uBAAuB;YACvB,yCAAyC;YACzC,oBAAoB;YACpB,gCAAgC;YAChC,IACE,WAAW,CAAC,MAAM,KAAK,CAAC;gBACxB,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC;gBAChC,6BAA6B,CAAC,WAAW,EAAE,KAAK,CAAC;gBACjD,gBAAgB,CAAC,aAAa,EAC9B;gBACA,iEAAiE;gBACjE,IAAI,gBAAgB,EAAE;oBACpB,eAAe,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAC;iBAC3D;gBAED,gBAAgB,CAAC,KAAK,CAAC,CAAC;aACzB;iBAAM;gBACL,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACzB;YAED,oEAAoE;YACpE,IAAI,gBAAgB,EAAE;gBACpB,iEAAiE;gBACjE,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBACvC,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;gBAC1C,gBAAgB,GAAG,IAAI,CAAC;aACzB;YAED,gFAAgF;YAChF,mDAAmD;YACnD,8EAA8E;YAC9E,IAAI,WAAW,CAAC,MAAM,IAAI,oBAAoB,EAAE;gBAC9C,sBAAO,IAAI,OAAO,CAAC,UAAC,OAAO;wBACzB,gBAAgB,GAAG;4BACjB,OAAO,SAAA;4BACP,OAAO,EAAE,UAAU,CAAC;gCAClB,OAAO,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC,CAAC;4BACnD,CAAC,EAAE,oBAAoB,CAAC;yBACzB,CAAC;oBACJ,CAAC,CAAC,EAAC;aACJ;YAED,sBAAO,IAAI,EAAC;;SACb,CACF,CAAC;IAEF,OAAO,mBAAmB,CAAC,SAAS,CAAC,UAAC,IAA2B;QAC/D,wBAAwB;QACxB,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,OAAO;SACR;QACD,SAAS,CAAC,KAAK,CAAC,oCAAoC,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAClG,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { AllWindowObservables } from 'src/frustration-plugin';\nimport {\n BrowserClient,\n asyncMap,\n DEFAULT_RAGE_CLICK_THRESHOLD,\n DEFAULT_RAGE_CLICK_WINDOW_MS,\n DEFAULT_RAGE_CLICK_OUT_OF_BOUNDS_THRESHOLD,\n} from '@amplitude/analytics-core';\nimport { shouldTrackEvent } from '../helpers';\nimport { AMPLITUDE_ELEMENT_RAGE_CLICKED_EVENT } from '../constants';\n\nconst RAGE_CLICK_THRESHOLD = DEFAULT_RAGE_CLICK_THRESHOLD;\nconst RAGE_CLICK_WINDOW_MS = DEFAULT_RAGE_CLICK_WINDOW_MS;\nconst RAGE_CLICK_OUT_OF_BOUNDS_THRESHOLD = DEFAULT_RAGE_CLICK_OUT_OF_BOUNDS_THRESHOLD;\n\ntype Click = {\n X: number;\n Y: number;\n Time: number;\n};\n\ntype EventRageClick = {\n '[Amplitude] Begin Time': string; // ISO-8601\n '[Amplitude] End Time': string; // ISO-8601\n '[Amplitude] Duration': number;\n '[Amplitude] Clicks': Array<Click>;\n '[Amplitude] Click Count': number;\n};\n\ntype ClickEvent = {\n event: MouseEvent | Event;\n timestamp: number;\n targetElementProperties: Record<string, any>;\n closestTrackedAncestor: Element | null;\n};\n\ntype ClickRegionBoundingBox = {\n yMin?: number;\n yMax?: number;\n xMin?: number;\n xMax?: number;\n isOutOfBounds?: boolean;\n};\n\ntype RageClickEvent = {\n rageClickEvent: EventRageClick;\n time: number;\n};\n\nfunction addCoordinates(regionBox: ClickRegionBoundingBox, click: ClickEvent) {\n const { clientX, clientY } = click.event as MouseEvent;\n regionBox.yMin = Math.min(regionBox.yMin ?? clientY, clientY);\n regionBox.yMax = Math.max(regionBox.yMax ?? clientY, clientY);\n regionBox.xMin = Math.min(regionBox.xMin ?? clientX, clientX);\n regionBox.xMax = Math.max(regionBox.xMax ?? clientX, clientX);\n regionBox.isOutOfBounds =\n regionBox.yMax - regionBox.yMin > RAGE_CLICK_OUT_OF_BOUNDS_THRESHOLD ||\n regionBox.xMax - regionBox.xMin > RAGE_CLICK_OUT_OF_BOUNDS_THRESHOLD;\n}\n\nfunction getRageClickAnalyticsEvent(clickWindow: ClickEvent[]) {\n /* istanbul ignore if */\n if (clickWindow.length === 0) {\n return null;\n }\n const firstClick = clickWindow[0];\n const lastClick = clickWindow[clickWindow.length - 1];\n\n const rageClickEvent: EventRageClick = {\n '[Amplitude] Begin Time': new Date(firstClick.timestamp).toISOString(),\n '[Amplitude] End Time': new Date(lastClick.timestamp).toISOString(),\n '[Amplitude] Duration': lastClick.timestamp - firstClick.timestamp,\n '[Amplitude] Clicks': clickWindow.map((click) => ({\n X: (click.event as MouseEvent).clientX,\n Y: (click.event as MouseEvent).clientY,\n Time: click.timestamp,\n })),\n '[Amplitude] Click Count': clickWindow.length,\n ...firstClick.targetElementProperties,\n };\n\n return { rageClickEvent, time: firstClick.timestamp };\n}\n\nfunction isClickOutsideRageClickWindow(clickWindow: ClickEvent[], click: ClickEvent) {\n const firstIndex = Math.max(0, clickWindow.length - RAGE_CLICK_THRESHOLD + 1);\n const firstClick = clickWindow[firstIndex];\n return click.timestamp - firstClick.timestamp >= RAGE_CLICK_WINDOW_MS;\n}\n\nfunction isNewElement(clickWindow: ClickEvent[], click: ClickEvent) {\n return (\n clickWindow.length > 0 &&\n clickWindow[clickWindow.length - 1].closestTrackedAncestor !== click.closestTrackedAncestor\n );\n}\n\nexport function trackRageClicks({\n amplitude,\n allObservables,\n shouldTrackRageClick,\n}: {\n amplitude: BrowserClient;\n allObservables: AllWindowObservables;\n shouldTrackRageClick: shouldTrackEvent;\n}) {\n const { clickObservable }: AllWindowObservables = allObservables;\n\n // TODO: take this out once it becomes a non-optional parameter\n /* istanbul ignore if */\n if (!clickObservable) {\n return;\n }\n\n // Keep track of all clicks within the sliding window\n let clickWindow: ClickEvent[] = [];\n\n // Keep track of the region box for all clicks, to determine when a rage click is out of bounds\n let clickBoundingBox: ClickRegionBoundingBox = {};\n\n let pendingRageClick: {\n resolve: (rageClickEvent: RageClickEvent | null) => void;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n timerId: any;\n } | null = null;\n\n // helper function to reset the click window and region box\n function resetClickWindow(click?: ClickEvent) {\n clickWindow = [];\n clickBoundingBox = {};\n if (click) {\n addCoordinates(clickBoundingBox, click);\n clickWindow.push(click);\n }\n }\n\n const rageClickObservable = asyncMap(\n clickObservable.filter((click) => shouldTrackRageClick('click', click.closestTrackedAncestor)),\n async (click: ClickEvent): Promise<RageClickEvent | null> => {\n // add this click's coordinates to the bounding box\n addCoordinates(clickBoundingBox, click);\n\n let resolutionValue: RageClickEvent | null = null;\n\n // if current click is:\n // 1. first click in the window\n // 2. on a new element\n // 3. outside the rage click time window\n // 4. out of bounds\n // then start a new click window\n if (\n clickWindow.length === 0 ||\n isNewElement(clickWindow, click) ||\n isClickOutsideRageClickWindow(clickWindow, click) ||\n clickBoundingBox.isOutOfBounds\n ) {\n // if there was a previous Rage Click Event on deck, then send it\n if (pendingRageClick) {\n resolutionValue = getRageClickAnalyticsEvent(clickWindow);\n }\n\n resetClickWindow(click);\n } else {\n clickWindow.push(click);\n }\n\n // if there was a previous Rage Click Event on deck, then resolve it\n if (pendingRageClick) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n clearTimeout(pendingRageClick.timerId);\n pendingRageClick.resolve(resolutionValue);\n pendingRageClick = null;\n }\n\n // if we have enough clicks to be a rage click, set a timout to trigger the rage\n // click event after the time threshold is reached.\n // This will be cancelled if a new click is tracked within the time threshold.\n if (clickWindow.length >= RAGE_CLICK_THRESHOLD) {\n return new Promise((resolve) => {\n pendingRageClick = {\n resolve,\n timerId: setTimeout(() => {\n resolve(getRageClickAnalyticsEvent(clickWindow));\n }, RAGE_CLICK_WINDOW_MS),\n };\n });\n }\n\n return null;\n },\n );\n\n return rageClickObservable.subscribe((data: RageClickEvent | null) => {\n /* istanbul ignore if */\n if (data === null) {\n return;\n }\n amplitude.track(AMPLITUDE_ELEMENT_RAGE_CLICKED_EVENT, data.rageClickEvent, { time: data.time });\n });\n}\n"]}
1
+ {"version":3,"file":"track-rage-click.js","sourceRoot":"","sources":["../../../src/autocapture/track-rage-click.ts"],"names":[],"mappings":"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","sourcesContent":["import { AllWindowObservables } from 'src/frustration-plugin';\nimport {\n BrowserClient,\n asyncMap,\n DEFAULT_RAGE_CLICK_THRESHOLD,\n DEFAULT_RAGE_CLICK_WINDOW_MS,\n DEFAULT_RAGE_CLICK_OUT_OF_BOUNDS_THRESHOLD,\n} from '@amplitude/analytics-core';\nimport { shouldTrackEvent } from '../helpers';\nimport { AMPLITUDE_ELEMENT_RAGE_CLICKED_EVENT } from '../constants';\n\nconst RAGE_CLICK_THRESHOLD = DEFAULT_RAGE_CLICK_THRESHOLD;\nconst RAGE_CLICK_WINDOW_MS = DEFAULT_RAGE_CLICK_WINDOW_MS;\nconst RAGE_CLICK_OUT_OF_BOUNDS_THRESHOLD = DEFAULT_RAGE_CLICK_OUT_OF_BOUNDS_THRESHOLD;\n\ntype Click = {\n X: number;\n Y: number;\n Time: number;\n};\n\ntype EventRageClick = {\n '[Amplitude] Begin Time': string; // ISO-8601\n '[Amplitude] End Time': string; // ISO-8601\n '[Amplitude] Duration': number;\n '[Amplitude] Clicks': Array<Click>;\n '[Amplitude] Click Count': number;\n};\n\ntype ClickEvent = {\n event: MouseEvent | Event;\n timestamp: number;\n targetElementProperties: Record<string, any>;\n closestTrackedAncestor: Element | null;\n};\n\ntype ClickRegionBoundingBox = {\n yMin?: number;\n yMax?: number;\n xMin?: number;\n xMax?: number;\n isOutOfBounds?: boolean;\n};\n\ntype RageClickEvent = {\n rageClickEvent: EventRageClick;\n time: number;\n};\n\nfunction addCoordinates(regionBox: ClickRegionBoundingBox, click: ClickEvent) {\n const { clientX, clientY } = click.event as MouseEvent;\n regionBox.yMin = Math.min(regionBox.yMin ?? clientY, clientY);\n regionBox.yMax = Math.max(regionBox.yMax ?? clientY, clientY);\n regionBox.xMin = Math.min(regionBox.xMin ?? clientX, clientX);\n regionBox.xMax = Math.max(regionBox.xMax ?? clientX, clientX);\n regionBox.isOutOfBounds =\n regionBox.yMax - regionBox.yMin > RAGE_CLICK_OUT_OF_BOUNDS_THRESHOLD ||\n regionBox.xMax - regionBox.xMin > RAGE_CLICK_OUT_OF_BOUNDS_THRESHOLD;\n}\n\nfunction getRageClickAnalyticsEvent(clickWindow: ClickEvent[]) {\n /* istanbul ignore if */\n if (clickWindow.length === 0) {\n return null;\n }\n const firstClick = clickWindow[0];\n const lastClick = clickWindow[clickWindow.length - 1];\n\n const rageClickEvent: EventRageClick = {\n '[Amplitude] Begin Time': new Date(firstClick.timestamp).toISOString(),\n '[Amplitude] End Time': new Date(lastClick.timestamp).toISOString(),\n '[Amplitude] Duration': lastClick.timestamp - firstClick.timestamp,\n '[Amplitude] Clicks': clickWindow.map((click) => ({\n X: (click.event as MouseEvent).clientX,\n Y: (click.event as MouseEvent).clientY,\n Time: click.timestamp,\n })),\n '[Amplitude] Click Count': clickWindow.length,\n ...firstClick.targetElementProperties,\n };\n\n return { rageClickEvent, time: firstClick.timestamp };\n}\n\nfunction isClickOutsideRageClickWindow(clickWindow: ClickEvent[], click: ClickEvent) {\n const firstIndex = Math.max(0, clickWindow.length - RAGE_CLICK_THRESHOLD + 1);\n const firstClick = clickWindow[firstIndex];\n return click.timestamp - firstClick.timestamp >= RAGE_CLICK_WINDOW_MS;\n}\n\nfunction isNewElement(clickWindow: ClickEvent[], click: ClickEvent) {\n return (\n clickWindow.length > 0 &&\n clickWindow[clickWindow.length - 1].closestTrackedAncestor !== click.closestTrackedAncestor\n );\n}\n\nexport function trackRageClicks({\n amplitude,\n allObservables,\n shouldTrackRageClick,\n}: {\n amplitude: BrowserClient;\n allObservables: AllWindowObservables;\n shouldTrackRageClick: shouldTrackEvent;\n}) {\n const { clickObservable }: AllWindowObservables = allObservables;\n\n // Keep track of all clicks within the sliding window\n let clickWindow: ClickEvent[] = [];\n\n // Keep track of the region box for all clicks, to determine when a rage click is out of bounds\n let clickBoundingBox: ClickRegionBoundingBox = {};\n\n let pendingRageClick: {\n resolve: (rageClickEvent: RageClickEvent | null) => void;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n timerId: any;\n } | null = null;\n\n // helper function to reset the click window and region box\n function resetClickWindow(click?: ClickEvent) {\n clickWindow = [];\n clickBoundingBox = {};\n if (click) {\n addCoordinates(clickBoundingBox, click);\n clickWindow.push(click);\n }\n }\n\n const rageClickObservable = asyncMap(\n clickObservable.filter((click) => shouldTrackRageClick('click', click.closestTrackedAncestor)),\n async (click: ClickEvent): Promise<RageClickEvent | null> => {\n // add this click's coordinates to the bounding box\n addCoordinates(clickBoundingBox, click);\n\n let resolutionValue: RageClickEvent | null = null;\n\n // if current click is:\n // 1. first click in the window\n // 2. on a new element\n // 3. outside the rage click time window\n // 4. out of bounds\n // then start a new click window\n if (\n clickWindow.length === 0 ||\n isNewElement(clickWindow, click) ||\n isClickOutsideRageClickWindow(clickWindow, click) ||\n clickBoundingBox.isOutOfBounds\n ) {\n // if there was a previous Rage Click Event on deck, then send it\n if (pendingRageClick) {\n resolutionValue = getRageClickAnalyticsEvent(clickWindow);\n }\n\n resetClickWindow(click);\n } else {\n clickWindow.push(click);\n }\n\n // if there was a previous Rage Click Event on deck, then resolve it\n if (pendingRageClick) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n clearTimeout(pendingRageClick.timerId);\n pendingRageClick.resolve(resolutionValue);\n pendingRageClick = null;\n }\n\n // if we have enough clicks to be a rage click, set a timout to trigger the rage\n // click event after the time threshold is reached.\n // This will be cancelled if a new click is tracked within the time threshold.\n if (clickWindow.length >= RAGE_CLICK_THRESHOLD) {\n return new Promise((resolve) => {\n pendingRageClick = {\n resolve,\n timerId: setTimeout(() => {\n resolve(getRageClickAnalyticsEvent(clickWindow));\n }, RAGE_CLICK_WINDOW_MS),\n };\n });\n }\n\n return null;\n },\n );\n\n return rageClickObservable.subscribe((data: RageClickEvent | null) => {\n /* istanbul ignore if */\n if (data === null) {\n return;\n }\n amplitude.track(AMPLITUDE_ELEMENT_RAGE_CLICKED_EVENT, data.rageClickEvent, { time: data.time });\n });\n}\n"]}
@@ -14,18 +14,15 @@ type BrowserEnrichmentPlugin = EnrichmentPlugin<BrowserClient, BrowserConfig>;
14
14
  export type AutoCaptureOptionsWithDefaults = Required<Pick<ElementInteractionsOptions, 'debounceTime' | 'cssSelectorAllowlist' | 'actionClickAllowlist'>> & ElementInteractionsOptions;
15
15
  export declare enum ObservablesEnum {
16
16
  ClickObservable = "clickObservable",
17
- ClickObservableZen = "clickObservableZen",
18
17
  ChangeObservable = "changeObservable",
19
18
  NavigateObservable = "navigateObservable",
20
- MutationObservable = "mutationObservable",
21
- MutationObservableZen = "mutationObservableZen",
22
- NavigateObservableZen = "navigateObservableZen"
19
+ MutationObservable = "mutationObservable"
23
20
  }
24
21
  export interface AllWindowObservables {
25
22
  [ObservablesEnum.ChangeObservable]: Observable<ElementBasedTimestampedEvent<Event>>;
26
- [ObservablesEnum.ClickObservableZen]: Observable<ElementBasedTimestampedEvent<MouseEvent>>;
27
- [ObservablesEnum.MutationObservableZen]: Observable<TimestampedEvent<MutationRecord[]>>;
28
- [ObservablesEnum.NavigateObservableZen]?: Observable<TimestampedEvent<NavigateEvent>>;
23
+ [ObservablesEnum.ClickObservable]: Observable<ElementBasedTimestampedEvent<MouseEvent>>;
24
+ [ObservablesEnum.MutationObservable]: Observable<TimestampedEvent<MutationRecord[]>>;
25
+ [ObservablesEnum.NavigateObservable]?: Observable<TimestampedEvent<NavigateEvent>>;
29
26
  }
30
27
  export declare const autocapturePlugin: (options?: ElementInteractionsOptions, context?: {
31
28
  diagnosticsClient: IDiagnosticsClient;
@@ -1 +1 @@
1
- {"version":3,"file":"autocapture-plugin.d.ts","sourceRoot":"","sources":["../../src/autocapture-plugin.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAI/B,kBAAkB,EAGnB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAEL,KAAK,4BAA4B,EACjC,KAAK,gBAAgB,EACrB,KAAK,aAAa,EACnB,MAAM,WAAW,CAAC;AAanB,OAAO,EAAE,UAAU,EAAkB,MAAM,2BAA2B,CAAC;AAEvE,KAAK,cAAc,GAAG;IACpB,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,kCAAkC,KAAK,IAAI,CAAC;IACvF,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,kCAAkC,KAAK,IAAI,CAAC;CAC3F,CAAC;AAEF,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,UAAU,EAAE,cAAc,CAAC;KAC5B;CACF;AAED,KAAK,uBAAuB,GAAG,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AAE9E,MAAM,MAAM,8BAA8B,GAAG,QAAQ,CACnD,IAAI,CAAC,0BAA0B,EAAE,cAAc,GAAG,sBAAsB,GAAG,sBAAsB,CAAC,CACnG,GACC,0BAA0B,CAAC;AAE7B,oBAAY,eAAe;IACzB,eAAe,oBAAoB;IACnC,kBAAkB,uBAAuB;IACzC,gBAAgB,qBAAqB;IAErC,kBAAkB,uBAAuB;IACzC,kBAAkB,uBAAuB;IACzC,qBAAqB,0BAA0B;IAC/C,qBAAqB,0BAA0B;CAChD;AAED,MAAM,WAAW,oBAAoB;IACnC,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpF,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE,UAAU,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3F,CAAC,eAAe,CAAC,qBAAqB,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IACxF,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC;CACvF;AAED,eAAO,MAAM,iBAAiB,aACnB,0BAA0B,YACzB;IAAE,iBAAiB,EAAE,kBAAkB,CAAA;CAAE,KAClD,uBAiQF,CAAC"}
1
+ {"version":3,"file":"autocapture-plugin.d.ts","sourceRoot":"","sources":["../../src/autocapture-plugin.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAI/B,kBAAkB,EAGnB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAEL,KAAK,4BAA4B,EACjC,KAAK,gBAAgB,EACrB,KAAK,aAAa,EACnB,MAAM,WAAW,CAAC;AAanB,OAAO,EAAE,UAAU,EAAkB,MAAM,2BAA2B,CAAC;AAEvE,KAAK,cAAc,GAAG;IACpB,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,kCAAkC,KAAK,IAAI,CAAC;IACvF,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,kCAAkC,KAAK,IAAI,CAAC;CAC3F,CAAC;AAEF,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,UAAU,EAAE,cAAc,CAAC;KAC5B;CACF;AAED,KAAK,uBAAuB,GAAG,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AAE9E,MAAM,MAAM,8BAA8B,GAAG,QAAQ,CACnD,IAAI,CAAC,0BAA0B,EAAE,cAAc,GAAG,sBAAsB,GAAG,sBAAsB,CAAC,CACnG,GACC,0BAA0B,CAAC;AAE7B,oBAAY,eAAe;IACzB,eAAe,oBAAoB;IACnC,gBAAgB,qBAAqB;IAErC,kBAAkB,uBAAuB;IACzC,kBAAkB,uBAAuB;CAC1C;AAED,MAAM,WAAW,oBAAoB;IACnC,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpF,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,UAAU,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC,CAAC;IACxF,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IACrF,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC;CACpF;AAED,eAAO,MAAM,iBAAiB,aACnB,0BAA0B,YACzB;IAAE,iBAAiB,EAAE,kBAAkB,CAAA;CAAE,KAClD,uBAiQF,CAAC"}
@@ -8,20 +8,17 @@ import { WindowMessenger } from './libs/messenger';
8
8
  import { trackClicks } from './autocapture/track-click';
9
9
  import { trackChange } from './autocapture/track-change';
10
10
  import { trackActionClick } from './autocapture/track-action-click';
11
- import { createClickObservableZen, createMutationObservableZen } from './observables';
11
+ import { createClickObservable, createMutationObservable } from './observables';
12
12
  import { createLabeledEventToTriggerMap, createTriggerEvaluator, groupLabeledEventIdsByEventType, } from './pageActions/triggers';
13
13
  import { DataExtractor } from './data-extractor';
14
14
  import { Observable } from '@amplitude/analytics-core';
15
15
  export var ObservablesEnum;
16
16
  (function (ObservablesEnum) {
17
17
  ObservablesEnum["ClickObservable"] = "clickObservable";
18
- ObservablesEnum["ClickObservableZen"] = "clickObservableZen";
19
18
  ObservablesEnum["ChangeObservable"] = "changeObservable";
20
19
  // ErrorObservable = 'errorObservable',
21
20
  ObservablesEnum["NavigateObservable"] = "navigateObservable";
22
21
  ObservablesEnum["MutationObservable"] = "mutationObservable";
23
- ObservablesEnum["MutationObservableZen"] = "mutationObservableZen";
24
- ObservablesEnum["NavigateObservableZen"] = "navigateObservableZen";
25
22
  })(ObservablesEnum || (ObservablesEnum = {}));
26
23
  export var autocapturePlugin = function (options, context) {
27
24
  var _a, _b, _c, _d, _e, _f, _g, _h;
@@ -62,7 +59,7 @@ export var autocapturePlugin = function (options, context) {
62
59
  // Create observables on events on the window
63
60
  var createObservables = function () {
64
61
  var _a;
65
- var clickObservableZen = multicast(createClickObservableZen().map(function (click) {
62
+ var clickObservable = multicast(createClickObservable().map(function (click) {
66
63
  return dataExtractor.addAdditionalEventProperties(click, 'click', options.cssSelectorAllowlist, dataAttributePrefix);
67
64
  }));
68
65
  var changeObservable = multicast(new Observable(function (observer) {
@@ -81,10 +78,10 @@ export var autocapturePlugin = function (options, context) {
81
78
  // map((error) => addAdditionalEventProperties(error, 'error')),
82
79
  // );
83
80
  // Create observable for URL changes
84
- var navigateObservableZen;
81
+ var navigateObservable;
85
82
  /* istanbul ignore next */
86
83
  if (window.navigation) {
87
- navigateObservableZen = multicast(new Observable(function (observer) {
84
+ navigateObservable = multicast(new Observable(function (observer) {
88
85
  var handler = function (navigateEvent) {
89
86
  var enrichedNavigateEvent = dataExtractor.addAdditionalEventProperties(navigateEvent, 'navigate', options.cssSelectorAllowlist, dataAttributePrefix);
90
87
  observer.next(enrichedNavigateEvent);
@@ -95,15 +92,15 @@ export var autocapturePlugin = function (options, context) {
95
92
  };
96
93
  }));
97
94
  }
98
- var mutationObservableZen = multicast(createMutationObservableZen().map(function (mutation) {
95
+ var mutationObservable = multicast(createMutationObservable().map(function (mutation) {
99
96
  return dataExtractor.addAdditionalEventProperties(mutation, 'mutation', options.cssSelectorAllowlist, dataAttributePrefix);
100
97
  }));
101
98
  return _a = {},
102
99
  _a[ObservablesEnum.ChangeObservable] = changeObservable,
103
100
  // [ObservablesEnum.ErrorObservable]: errorObservable,
104
- _a[ObservablesEnum.ClickObservableZen] = clickObservableZen,
105
- _a[ObservablesEnum.MutationObservableZen] = mutationObservableZen,
106
- _a[ObservablesEnum.NavigateObservableZen] = navigateObservableZen,
101
+ _a[ObservablesEnum.ClickObservable] = clickObservable,
102
+ _a[ObservablesEnum.MutationObservable] = mutationObservable,
103
+ _a[ObservablesEnum.NavigateObservable] = navigateObservable,
107
104
  _a;
108
105
  };
109
106
  // Group labeled events by event type (eg. click, change)
@@ -1 +1 @@
1
- {"version":3,"file":"autocapture-plugin.js","sourceRoot":"","sources":["../../src/autocapture-plugin.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-restricted-globals */\nimport {\n type BrowserClient,\n type BrowserConfig,\n type EnrichmentPlugin,\n type ElementInteractionsOptions,\n DEFAULT_CSS_SELECTOR_ALLOWLIST,\n DEFAULT_ACTION_CLICK_ALLOWLIST,\n DEFAULT_DATA_ATTRIBUTE_PREFIX,\n IDiagnosticsClient,\n getGlobalScope,\n multicast,\n} from '@amplitude/analytics-core';\nimport { VERSION } from './version';\nimport * as constants from './constants';\nimport {\n createShouldTrackEvent,\n type ElementBasedTimestampedEvent,\n type TimestampedEvent,\n type NavigateEvent,\n} from './helpers';\nimport { WindowMessenger } from './libs/messenger';\nimport { trackClicks } from './autocapture/track-click';\nimport { trackChange } from './autocapture/track-change';\nimport { trackActionClick } from './autocapture/track-action-click';\nimport { createClickObservableZen, createMutationObservableZen } from './observables';\n\nimport {\n createLabeledEventToTriggerMap,\n createTriggerEvaluator,\n groupLabeledEventIdsByEventType,\n} from './pageActions/triggers';\nimport { DataExtractor } from './data-extractor';\nimport { Observable, Unsubscribable } from '@amplitude/analytics-core';\n\ntype NavigationType = {\n addEventListener: (type: string, listener: EventListenerOrEventListenerObject) => void;\n removeEventListener: (type: string, listener: EventListenerOrEventListenerObject) => void;\n};\n\ndeclare global {\n interface Window {\n navigation: NavigationType;\n }\n}\n\ntype BrowserEnrichmentPlugin = EnrichmentPlugin<BrowserClient, BrowserConfig>;\n\nexport type AutoCaptureOptionsWithDefaults = Required<\n Pick<ElementInteractionsOptions, 'debounceTime' | 'cssSelectorAllowlist' | 'actionClickAllowlist'>\n> &\n ElementInteractionsOptions;\n\nexport enum ObservablesEnum {\n ClickObservable = 'clickObservable',\n ClickObservableZen = 'clickObservableZen',\n ChangeObservable = 'changeObservable',\n // ErrorObservable = 'errorObservable',\n NavigateObservable = 'navigateObservable',\n MutationObservable = 'mutationObservable',\n MutationObservableZen = 'mutationObservableZen',\n NavigateObservableZen = 'navigateObservableZen',\n}\n\nexport interface AllWindowObservables {\n [ObservablesEnum.ChangeObservable]: Observable<ElementBasedTimestampedEvent<Event>>;\n // [ObservablesEnum.ErrorObservable]: Observable<TimestampedEvent<ErrorEvent>>;\n [ObservablesEnum.ClickObservableZen]: Observable<ElementBasedTimestampedEvent<MouseEvent>>;\n [ObservablesEnum.MutationObservableZen]: Observable<TimestampedEvent<MutationRecord[]>>;\n [ObservablesEnum.NavigateObservableZen]?: Observable<TimestampedEvent<NavigateEvent>>;\n}\n\nexport const autocapturePlugin = (\n options: ElementInteractionsOptions = {},\n context?: { diagnosticsClient: IDiagnosticsClient },\n): BrowserEnrichmentPlugin => {\n // Set the plugin version tag\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n context?.diagnosticsClient.setTag('plugin.autocapture.version', VERSION);\n\n const {\n dataAttributePrefix = DEFAULT_DATA_ATTRIBUTE_PREFIX,\n visualTaggingOptions = {\n enabled: true,\n messenger: new WindowMessenger(),\n },\n } = options;\n\n options.cssSelectorAllowlist = options.cssSelectorAllowlist ?? DEFAULT_CSS_SELECTOR_ALLOWLIST;\n options.actionClickAllowlist = options.actionClickAllowlist ?? DEFAULT_ACTION_CLICK_ALLOWLIST;\n options.debounceTime = options.debounceTime ?? 0;\n\n options.pageUrlExcludelist = options.pageUrlExcludelist?.reduce(\n (acc: (string | RegExp | { pattern: string })[], excludePattern) => {\n if (typeof excludePattern === 'string') {\n acc.push(excludePattern);\n }\n if (excludePattern instanceof RegExp) {\n acc.push(excludePattern);\n }\n if (typeof excludePattern === 'object' && excludePattern !== null && 'pattern' in excludePattern) {\n try {\n acc.push(new RegExp(excludePattern.pattern));\n } catch (regexError) {\n console.warn(`Invalid regex pattern: ${excludePattern.pattern}`, regexError);\n return acc;\n }\n }\n return acc;\n },\n [],\n );\n\n const name = constants.PLUGIN_NAME;\n const type = 'enrichment';\n\n const subscriptions: Unsubscribable[] = [];\n\n // Create data extractor based on options\n const dataExtractor = new DataExtractor(options, context);\n\n // Create observables on events on the window\n const createObservables = (): AllWindowObservables => {\n const clickObservableZen = multicast(\n createClickObservableZen().map(\n (click) =>\n dataExtractor.addAdditionalEventProperties(\n click,\n 'click',\n (options as AutoCaptureOptionsWithDefaults).cssSelectorAllowlist,\n dataAttributePrefix,\n ) as ElementBasedTimestampedEvent<MouseEvent>,\n ),\n );\n\n const changeObservable = multicast(\n new Observable<ElementBasedTimestampedEvent<Event>>((observer) => {\n const handler = (changeEvent: Event) => {\n const enrichedChangeEvent = dataExtractor.addAdditionalEventProperties(\n changeEvent,\n 'change',\n (options as AutoCaptureOptionsWithDefaults).cssSelectorAllowlist,\n dataAttributePrefix,\n ) as ElementBasedTimestampedEvent<Event>;\n observer.next(enrichedChangeEvent);\n };\n /* istanbul ignore next */\n getGlobalScope()?.document.addEventListener('change', handler, { capture: true });\n /* istanbul ignore next */\n return () => getGlobalScope()?.document.removeEventListener('change', handler);\n }),\n );\n\n // Create Observable from unhandled errors\n // const errorObservable = fromEvent<ErrorEvent>(window, 'error').pipe(\n // map((error) => addAdditionalEventProperties(error, 'error')),\n // );\n\n // Create observable for URL changes\n let navigateObservableZen: Observable<TimestampedEvent<NavigateEvent>> | undefined;\n\n /* istanbul ignore next */\n if (window.navigation) {\n navigateObservableZen = multicast(\n new Observable<TimestampedEvent<NavigateEvent>>((observer) => {\n const handler = (navigateEvent: NavigateEvent) => {\n const enrichedNavigateEvent = dataExtractor.addAdditionalEventProperties(\n navigateEvent,\n 'navigate',\n (options as AutoCaptureOptionsWithDefaults).cssSelectorAllowlist,\n dataAttributePrefix,\n );\n observer.next(enrichedNavigateEvent);\n };\n window.navigation.addEventListener('navigate', handler as EventListener);\n return () => {\n window.navigation.removeEventListener('navigate', handler as EventListener);\n };\n }),\n );\n }\n\n const mutationObservableZen = multicast(\n createMutationObservableZen().map((mutation) =>\n dataExtractor.addAdditionalEventProperties(\n mutation,\n 'mutation',\n (options as AutoCaptureOptionsWithDefaults).cssSelectorAllowlist,\n dataAttributePrefix,\n ),\n ),\n );\n\n return {\n [ObservablesEnum.ChangeObservable]: changeObservable,\n // [ObservablesEnum.ErrorObservable]: errorObservable,\n [ObservablesEnum.ClickObservableZen]: clickObservableZen,\n [ObservablesEnum.MutationObservableZen]: mutationObservableZen,\n [ObservablesEnum.NavigateObservableZen]: navigateObservableZen,\n };\n };\n\n // Group labeled events by event type (eg. click, change)\n let groupedLabeledEvents = groupLabeledEventIdsByEventType(Object.values(options.pageActions?.labeledEvents ?? {}));\n\n let labeledEventToTriggerMap = createLabeledEventToTriggerMap(options.pageActions?.triggers ?? []);\n\n // Evaluate triggers for the given event by running the actions associated with the matching triggers\n const evaluateTriggers = createTriggerEvaluator(\n groupedLabeledEvents,\n labeledEventToTriggerMap,\n dataExtractor,\n options,\n );\n\n // Function to recalculate internal variables when remote config is updated\n const recomputePageActionsData = (remotePageActions: ElementInteractionsOptions['pageActions']) => {\n if (remotePageActions) {\n // Merge remote config with local options\n options.pageActions = {\n ...options.pageActions,\n ...remotePageActions,\n };\n\n // Recalculate internal variables\n groupedLabeledEvents = groupLabeledEventIdsByEventType(Object.values(options.pageActions.labeledEvents ?? {}));\n labeledEventToTriggerMap = createLabeledEventToTriggerMap(options.pageActions.triggers ?? []);\n\n // Update evaluateTriggers function\n evaluateTriggers.update(groupedLabeledEvents, labeledEventToTriggerMap, options);\n }\n };\n\n const setup: BrowserEnrichmentPlugin['setup'] = async (config, amplitude) => {\n /* istanbul ignore if */\n if (typeof document === 'undefined') {\n return;\n }\n\n // Fetch remote config for pageActions in a non-blocking manner\n if (config.fetchRemoteConfig) {\n if (!config.remoteConfigClient) {\n // TODO(xinyi): Diagnostics.recordEvent\n config.loggerProvider.debug('Remote config client is not provided, skipping remote config fetch');\n } else {\n config.remoteConfigClient.subscribe('analyticsSDK.pageActions', 'all', (remoteConfig) => {\n recomputePageActionsData(remoteConfig as ElementInteractionsOptions['pageActions']);\n });\n }\n }\n\n // Create should track event functions the different allowlists\n const shouldTrackEvent = createShouldTrackEvent(\n options,\n (options as AutoCaptureOptionsWithDefaults).cssSelectorAllowlist,\n );\n const shouldTrackActionClick = createShouldTrackEvent(\n options,\n (options as AutoCaptureOptionsWithDefaults).actionClickAllowlist,\n );\n\n // Create observables for events on the window\n const allObservables = createObservables();\n\n // Create subscriptions\n const clickTrackingSubscription = trackClicks({\n allObservables,\n amplitude,\n shouldTrackEvent: shouldTrackEvent,\n evaluateTriggers: evaluateTriggers.evaluate.bind(evaluateTriggers),\n });\n\n subscriptions.push(clickTrackingSubscription);\n\n const changeSubscription = trackChange({\n allObservables,\n getEventProperties: (...args) => dataExtractor.getEventProperties(...args, dataAttributePrefix),\n amplitude,\n shouldTrackEvent: shouldTrackEvent,\n evaluateTriggers: evaluateTriggers.evaluate.bind(evaluateTriggers),\n });\n subscriptions.push(changeSubscription);\n\n const actionClickSubscription = trackActionClick({\n allObservables,\n options: options as AutoCaptureOptionsWithDefaults,\n getEventProperties: (...args) => dataExtractor.getEventProperties(...args, dataAttributePrefix),\n amplitude,\n shouldTrackEvent,\n shouldTrackActionClick: shouldTrackActionClick,\n });\n if (actionClickSubscription) {\n subscriptions.push(actionClickSubscription);\n }\n\n /* istanbul ignore next */\n config?.loggerProvider?.log(`${name} has been successfully added.`);\n\n // Setup visual tagging selector\n if (window.opener && visualTaggingOptions.enabled) {\n const allowlist = (options as AutoCaptureOptionsWithDefaults).cssSelectorAllowlist;\n const actionClickAllowlist = (options as AutoCaptureOptionsWithDefaults).actionClickAllowlist;\n\n /* istanbul ignore next */\n visualTaggingOptions.messenger?.setup({\n dataExtractor: dataExtractor,\n logger: config?.loggerProvider,\n ...(config?.serverZone && { endpoint: constants.AMPLITUDE_ORIGINS_MAP[config.serverZone] }),\n isElementSelectable: createShouldTrackEvent(options, [...allowlist, ...actionClickAllowlist]),\n cssSelectorAllowlist: allowlist,\n actionClickAllowlist: actionClickAllowlist,\n });\n }\n };\n\n const execute: BrowserEnrichmentPlugin['execute'] = async (event) => {\n return event;\n };\n\n const teardown = async () => {\n for (const subscription of subscriptions) {\n subscription.unsubscribe();\n }\n };\n\n return {\n name,\n type,\n setup,\n execute,\n teardown,\n };\n};\n"]}
1
+ {"version":3,"file":"autocapture-plugin.js","sourceRoot":"","sources":["../../src/autocapture-plugin.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-restricted-globals */\nimport {\n type BrowserClient,\n type BrowserConfig,\n type EnrichmentPlugin,\n type ElementInteractionsOptions,\n DEFAULT_CSS_SELECTOR_ALLOWLIST,\n DEFAULT_ACTION_CLICK_ALLOWLIST,\n DEFAULT_DATA_ATTRIBUTE_PREFIX,\n IDiagnosticsClient,\n getGlobalScope,\n multicast,\n} from '@amplitude/analytics-core';\nimport { VERSION } from './version';\nimport * as constants from './constants';\nimport {\n createShouldTrackEvent,\n type ElementBasedTimestampedEvent,\n type TimestampedEvent,\n type NavigateEvent,\n} from './helpers';\nimport { WindowMessenger } from './libs/messenger';\nimport { trackClicks } from './autocapture/track-click';\nimport { trackChange } from './autocapture/track-change';\nimport { trackActionClick } from './autocapture/track-action-click';\nimport { createClickObservable, createMutationObservable } from './observables';\n\nimport {\n createLabeledEventToTriggerMap,\n createTriggerEvaluator,\n groupLabeledEventIdsByEventType,\n} from './pageActions/triggers';\nimport { DataExtractor } from './data-extractor';\nimport { Observable, Unsubscribable } from '@amplitude/analytics-core';\n\ntype NavigationType = {\n addEventListener: (type: string, listener: EventListenerOrEventListenerObject) => void;\n removeEventListener: (type: string, listener: EventListenerOrEventListenerObject) => void;\n};\n\ndeclare global {\n interface Window {\n navigation: NavigationType;\n }\n}\n\ntype BrowserEnrichmentPlugin = EnrichmentPlugin<BrowserClient, BrowserConfig>;\n\nexport type AutoCaptureOptionsWithDefaults = Required<\n Pick<ElementInteractionsOptions, 'debounceTime' | 'cssSelectorAllowlist' | 'actionClickAllowlist'>\n> &\n ElementInteractionsOptions;\n\nexport enum ObservablesEnum {\n ClickObservable = 'clickObservable',\n ChangeObservable = 'changeObservable',\n // ErrorObservable = 'errorObservable',\n NavigateObservable = 'navigateObservable',\n MutationObservable = 'mutationObservable',\n}\n\nexport interface AllWindowObservables {\n [ObservablesEnum.ChangeObservable]: Observable<ElementBasedTimestampedEvent<Event>>;\n // [ObservablesEnum.ErrorObservable]: Observable<TimestampedEvent<ErrorEvent>>;\n [ObservablesEnum.ClickObservable]: Observable<ElementBasedTimestampedEvent<MouseEvent>>;\n [ObservablesEnum.MutationObservable]: Observable<TimestampedEvent<MutationRecord[]>>;\n [ObservablesEnum.NavigateObservable]?: Observable<TimestampedEvent<NavigateEvent>>;\n}\n\nexport const autocapturePlugin = (\n options: ElementInteractionsOptions = {},\n context?: { diagnosticsClient: IDiagnosticsClient },\n): BrowserEnrichmentPlugin => {\n // Set the plugin version tag\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n context?.diagnosticsClient.setTag('plugin.autocapture.version', VERSION);\n\n const {\n dataAttributePrefix = DEFAULT_DATA_ATTRIBUTE_PREFIX,\n visualTaggingOptions = {\n enabled: true,\n messenger: new WindowMessenger(),\n },\n } = options;\n\n options.cssSelectorAllowlist = options.cssSelectorAllowlist ?? DEFAULT_CSS_SELECTOR_ALLOWLIST;\n options.actionClickAllowlist = options.actionClickAllowlist ?? DEFAULT_ACTION_CLICK_ALLOWLIST;\n options.debounceTime = options.debounceTime ?? 0;\n\n options.pageUrlExcludelist = options.pageUrlExcludelist?.reduce(\n (acc: (string | RegExp | { pattern: string })[], excludePattern) => {\n if (typeof excludePattern === 'string') {\n acc.push(excludePattern);\n }\n if (excludePattern instanceof RegExp) {\n acc.push(excludePattern);\n }\n if (typeof excludePattern === 'object' && excludePattern !== null && 'pattern' in excludePattern) {\n try {\n acc.push(new RegExp(excludePattern.pattern));\n } catch (regexError) {\n console.warn(`Invalid regex pattern: ${excludePattern.pattern}`, regexError);\n return acc;\n }\n }\n return acc;\n },\n [],\n );\n\n const name = constants.PLUGIN_NAME;\n const type = 'enrichment';\n\n const subscriptions: Unsubscribable[] = [];\n\n // Create data extractor based on options\n const dataExtractor = new DataExtractor(options, context);\n\n // Create observables on events on the window\n const createObservables = (): AllWindowObservables => {\n const clickObservable = multicast(\n createClickObservable().map(\n (click) =>\n dataExtractor.addAdditionalEventProperties(\n click,\n 'click',\n (options as AutoCaptureOptionsWithDefaults).cssSelectorAllowlist,\n dataAttributePrefix,\n ) as ElementBasedTimestampedEvent<MouseEvent>,\n ),\n );\n\n const changeObservable = multicast(\n new Observable<ElementBasedTimestampedEvent<Event>>((observer) => {\n const handler = (changeEvent: Event) => {\n const enrichedChangeEvent = dataExtractor.addAdditionalEventProperties(\n changeEvent,\n 'change',\n (options as AutoCaptureOptionsWithDefaults).cssSelectorAllowlist,\n dataAttributePrefix,\n ) as ElementBasedTimestampedEvent<Event>;\n observer.next(enrichedChangeEvent);\n };\n /* istanbul ignore next */\n getGlobalScope()?.document.addEventListener('change', handler, { capture: true });\n /* istanbul ignore next */\n return () => getGlobalScope()?.document.removeEventListener('change', handler);\n }),\n );\n\n // Create Observable from unhandled errors\n // const errorObservable = fromEvent<ErrorEvent>(window, 'error').pipe(\n // map((error) => addAdditionalEventProperties(error, 'error')),\n // );\n\n // Create observable for URL changes\n let navigateObservable: Observable<TimestampedEvent<NavigateEvent>> | undefined;\n\n /* istanbul ignore next */\n if (window.navigation) {\n navigateObservable = multicast(\n new Observable<TimestampedEvent<NavigateEvent>>((observer) => {\n const handler = (navigateEvent: NavigateEvent) => {\n const enrichedNavigateEvent = dataExtractor.addAdditionalEventProperties(\n navigateEvent,\n 'navigate',\n (options as AutoCaptureOptionsWithDefaults).cssSelectorAllowlist,\n dataAttributePrefix,\n );\n observer.next(enrichedNavigateEvent);\n };\n window.navigation.addEventListener('navigate', handler as EventListener);\n return () => {\n window.navigation.removeEventListener('navigate', handler as EventListener);\n };\n }),\n );\n }\n\n const mutationObservable = multicast(\n createMutationObservable().map((mutation) =>\n dataExtractor.addAdditionalEventProperties(\n mutation,\n 'mutation',\n (options as AutoCaptureOptionsWithDefaults).cssSelectorAllowlist,\n dataAttributePrefix,\n ),\n ),\n );\n\n return {\n [ObservablesEnum.ChangeObservable]: changeObservable,\n // [ObservablesEnum.ErrorObservable]: errorObservable,\n [ObservablesEnum.ClickObservable]: clickObservable,\n [ObservablesEnum.MutationObservable]: mutationObservable,\n [ObservablesEnum.NavigateObservable]: navigateObservable,\n };\n };\n\n // Group labeled events by event type (eg. click, change)\n let groupedLabeledEvents = groupLabeledEventIdsByEventType(Object.values(options.pageActions?.labeledEvents ?? {}));\n\n let labeledEventToTriggerMap = createLabeledEventToTriggerMap(options.pageActions?.triggers ?? []);\n\n // Evaluate triggers for the given event by running the actions associated with the matching triggers\n const evaluateTriggers = createTriggerEvaluator(\n groupedLabeledEvents,\n labeledEventToTriggerMap,\n dataExtractor,\n options,\n );\n\n // Function to recalculate internal variables when remote config is updated\n const recomputePageActionsData = (remotePageActions: ElementInteractionsOptions['pageActions']) => {\n if (remotePageActions) {\n // Merge remote config with local options\n options.pageActions = {\n ...options.pageActions,\n ...remotePageActions,\n };\n\n // Recalculate internal variables\n groupedLabeledEvents = groupLabeledEventIdsByEventType(Object.values(options.pageActions.labeledEvents ?? {}));\n labeledEventToTriggerMap = createLabeledEventToTriggerMap(options.pageActions.triggers ?? []);\n\n // Update evaluateTriggers function\n evaluateTriggers.update(groupedLabeledEvents, labeledEventToTriggerMap, options);\n }\n };\n\n const setup: BrowserEnrichmentPlugin['setup'] = async (config, amplitude) => {\n /* istanbul ignore if */\n if (typeof document === 'undefined') {\n return;\n }\n\n // Fetch remote config for pageActions in a non-blocking manner\n if (config.fetchRemoteConfig) {\n if (!config.remoteConfigClient) {\n // TODO(xinyi): Diagnostics.recordEvent\n config.loggerProvider.debug('Remote config client is not provided, skipping remote config fetch');\n } else {\n config.remoteConfigClient.subscribe('analyticsSDK.pageActions', 'all', (remoteConfig) => {\n recomputePageActionsData(remoteConfig as ElementInteractionsOptions['pageActions']);\n });\n }\n }\n\n // Create should track event functions the different allowlists\n const shouldTrackEvent = createShouldTrackEvent(\n options,\n (options as AutoCaptureOptionsWithDefaults).cssSelectorAllowlist,\n );\n const shouldTrackActionClick = createShouldTrackEvent(\n options,\n (options as AutoCaptureOptionsWithDefaults).actionClickAllowlist,\n );\n\n // Create observables for events on the window\n const allObservables = createObservables();\n\n // Create subscriptions\n const clickTrackingSubscription = trackClicks({\n allObservables,\n amplitude,\n shouldTrackEvent: shouldTrackEvent,\n evaluateTriggers: evaluateTriggers.evaluate.bind(evaluateTriggers),\n });\n\n subscriptions.push(clickTrackingSubscription);\n\n const changeSubscription = trackChange({\n allObservables,\n getEventProperties: (...args) => dataExtractor.getEventProperties(...args, dataAttributePrefix),\n amplitude,\n shouldTrackEvent: shouldTrackEvent,\n evaluateTriggers: evaluateTriggers.evaluate.bind(evaluateTriggers),\n });\n subscriptions.push(changeSubscription);\n\n const actionClickSubscription = trackActionClick({\n allObservables,\n options: options as AutoCaptureOptionsWithDefaults,\n getEventProperties: (...args) => dataExtractor.getEventProperties(...args, dataAttributePrefix),\n amplitude,\n shouldTrackEvent,\n shouldTrackActionClick: shouldTrackActionClick,\n });\n if (actionClickSubscription) {\n subscriptions.push(actionClickSubscription);\n }\n\n /* istanbul ignore next */\n config?.loggerProvider?.log(`${name} has been successfully added.`);\n\n // Setup visual tagging selector\n if (window.opener && visualTaggingOptions.enabled) {\n const allowlist = (options as AutoCaptureOptionsWithDefaults).cssSelectorAllowlist;\n const actionClickAllowlist = (options as AutoCaptureOptionsWithDefaults).actionClickAllowlist;\n\n /* istanbul ignore next */\n visualTaggingOptions.messenger?.setup({\n dataExtractor: dataExtractor,\n logger: config?.loggerProvider,\n ...(config?.serverZone && { endpoint: constants.AMPLITUDE_ORIGINS_MAP[config.serverZone] }),\n isElementSelectable: createShouldTrackEvent(options, [...allowlist, ...actionClickAllowlist]),\n cssSelectorAllowlist: allowlist,\n actionClickAllowlist: actionClickAllowlist,\n });\n }\n };\n\n const execute: BrowserEnrichmentPlugin['execute'] = async (event) => {\n return event;\n };\n\n const teardown = async () => {\n for (const subscription of subscriptions) {\n subscription.unsubscribe();\n }\n };\n\n return {\n name,\n type,\n setup,\n execute,\n teardown,\n };\n};\n"]}
@@ -14,13 +14,11 @@ export declare const AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_LEFT = "[Amplitude] E
14
14
  export declare const AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_TOP = "[Amplitude] Element Position Top";
15
15
  export declare const AMPLITUDE_EVENT_PROP_ELEMENT_ARIA_LABEL = "[Amplitude] Element Aria Label";
16
16
  export declare const AMPLITUDE_EVENT_PROP_ELEMENT_ATTRIBUTES = "[Amplitude] Element Attributes";
17
- export declare const AMPLITUDE_EVENT_PROP_ELEMENT_PATH = "[Amplitude] Element Path";
18
17
  export declare const AMPLITUDE_EVENT_PROP_ELEMENT_PARENT_LABEL = "[Amplitude] Element Parent Label";
19
18
  export declare const AMPLITUDE_EVENT_PROP_PAGE_URL = "[Amplitude] Page URL";
20
19
  export declare const AMPLITUDE_EVENT_PROP_PAGE_TITLE = "[Amplitude] Page Title";
21
20
  export declare const AMPLITUDE_EVENT_PROP_VIEWPORT_HEIGHT = "[Amplitude] Viewport Height";
22
21
  export declare const AMPLITUDE_EVENT_PROP_VIEWPORT_WIDTH = "[Amplitude] Viewport Width";
23
- export declare const AMPLITUDE_EVENT_PROP_PAGE_VIEW_ID = "[Amplitude] Page View ID";
24
22
  export declare const AMPLITUDE_ORIGIN = "https://app.amplitude.com";
25
23
  export declare const AMPLITUDE_ORIGIN_EU = "https://app.eu.amplitude.com";
26
24
  export declare const AMPLITUDE_ORIGIN_STAGING = "https://apps.stag2.amplitude.com";
@@ -33,5 +31,5 @@ export declare const AMPLITUDE_VISUAL_TAGGING_SELECTOR_SCRIPT_URL = "https://cdn
33
31
  export declare const AMPLITUDE_VISUAL_TAGGING_HIGHLIGHT_CLASS = "amp-visual-tagging-selector-highlight";
34
32
  export declare const DATA_AMP_MASK_ATTRIBUTES = "data-amp-mask-attributes";
35
33
  export declare const MAX_MASK_TEXT_PATTERNS = 25;
36
- export declare const PAGE_VIEW_SESSION_STORAGE_KEY = "AMP_PAGE_VIEW";
34
+ export declare const MAX_ATTRIBUTE_LENGTH = 128;
37
35
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,0CAA0C,CAAC;AACnE,eAAO,MAAM,uBAAuB,0CAA0C,CAAC;AAE/E,eAAO,MAAM,+BAA+B,gCAAgC,CAAC;AAC7E,eAAO,MAAM,oCAAoC,2BAA2B,CAAC;AAC7E,eAAO,MAAM,oCAAoC,2BAA2B,CAAC;AAC7E,eAAO,MAAM,+BAA+B,gCAAgC,CAAC;AAE7E,eAAO,MAAM,+BAA+B,2BAA2B,CAAC;AACxE,eAAO,MAAM,kCAAkC,8BAA8B,CAAC;AAC9E,eAAO,MAAM,gCAAgC,4BAA4B,CAAC;AAC1E,eAAO,MAAM,iCAAiC,6BAA6B,CAAC;AAC5E,eAAO,MAAM,sCAAsC,kCAAkC,CAAC;AACtF,eAAO,MAAM,iCAAiC,6BAA6B,CAAC;AAC5E,eAAO,MAAM,0CAA0C,sCAAsC,CAAC;AAC9F,eAAO,MAAM,yCAAyC,qCAAqC,CAAC;AAC5F,eAAO,MAAM,uCAAuC,mCAAmC,CAAC;AACxF,eAAO,MAAM,uCAAuC,mCAAmC,CAAC;AACxF,eAAO,MAAM,iCAAiC,6BAA6B,CAAC;AAE5E,eAAO,MAAM,yCAAyC,qCAAqC,CAAC;AAC5F,eAAO,MAAM,6BAA6B,yBAAyB,CAAC;AACpE,eAAO,MAAM,+BAA+B,2BAA2B,CAAC;AACxE,eAAO,MAAM,oCAAoC,gCAAgC,CAAC;AAClF,eAAO,MAAM,mCAAmC,+BAA+B,CAAC;AAEhF,eAAO,MAAM,iCAAiC,6BAA6B,CAAC;AAG5E,eAAO,MAAM,gBAAgB,8BAA8B,CAAC;AAC5D,eAAO,MAAM,mBAAmB,iCAAiC,CAAC;AAClE,eAAO,MAAM,wBAAwB,qCAAqC,CAAC;AAC3E,eAAO,MAAM,qBAAqB;;;;CAIjC,CAAC;AAEF,eAAO,MAAM,4CAA4C,6EACmB,CAAC;AAG7E,eAAO,MAAM,wCAAwC,0CAA0C,CAAC;AAGhG,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AAEnE,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAGzC,eAAO,MAAM,6BAA6B,kBAAkB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,0CAA0C,CAAC;AACnE,eAAO,MAAM,uBAAuB,0CAA0C,CAAC;AAE/E,eAAO,MAAM,+BAA+B,gCAAgC,CAAC;AAC7E,eAAO,MAAM,oCAAoC,2BAA2B,CAAC;AAC7E,eAAO,MAAM,oCAAoC,2BAA2B,CAAC;AAC7E,eAAO,MAAM,+BAA+B,gCAAgC,CAAC;AAE7E,eAAO,MAAM,+BAA+B,2BAA2B,CAAC;AACxE,eAAO,MAAM,kCAAkC,8BAA8B,CAAC;AAC9E,eAAO,MAAM,gCAAgC,4BAA4B,CAAC;AAC1E,eAAO,MAAM,iCAAiC,6BAA6B,CAAC;AAC5E,eAAO,MAAM,sCAAsC,kCAAkC,CAAC;AACtF,eAAO,MAAM,iCAAiC,6BAA6B,CAAC;AAC5E,eAAO,MAAM,0CAA0C,sCAAsC,CAAC;AAC9F,eAAO,MAAM,yCAAyC,qCAAqC,CAAC;AAC5F,eAAO,MAAM,uCAAuC,mCAAmC,CAAC;AACxF,eAAO,MAAM,uCAAuC,mCAAmC,CAAC;AAExF,eAAO,MAAM,yCAAyC,qCAAqC,CAAC;AAC5F,eAAO,MAAM,6BAA6B,yBAAyB,CAAC;AACpE,eAAO,MAAM,+BAA+B,2BAA2B,CAAC;AACxE,eAAO,MAAM,oCAAoC,gCAAgC,CAAC;AAClF,eAAO,MAAM,mCAAmC,+BAA+B,CAAC;AAGhF,eAAO,MAAM,gBAAgB,8BAA8B,CAAC;AAC5D,eAAO,MAAM,mBAAmB,iCAAiC,CAAC;AAClE,eAAO,MAAM,wBAAwB,qCAAqC,CAAC;AAC3E,eAAO,MAAM,qBAAqB;;;;CAIjC,CAAC;AAEF,eAAO,MAAM,4CAA4C,6EACmB,CAAC;AAG7E,eAAO,MAAM,wCAAwC,0CAA0C,CAAC;AAGhG,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AAEnE,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,oBAAoB,MAAM,CAAC"}
@@ -14,13 +14,11 @@ export var AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_LEFT = '[Amplitude] Element Pos
14
14
  export var AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_TOP = '[Amplitude] Element Position Top';
15
15
  export var AMPLITUDE_EVENT_PROP_ELEMENT_ARIA_LABEL = '[Amplitude] Element Aria Label';
16
16
  export var AMPLITUDE_EVENT_PROP_ELEMENT_ATTRIBUTES = '[Amplitude] Element Attributes';
17
- export var AMPLITUDE_EVENT_PROP_ELEMENT_PATH = '[Amplitude] Element Path';
18
17
  export var AMPLITUDE_EVENT_PROP_ELEMENT_PARENT_LABEL = '[Amplitude] Element Parent Label';
19
18
  export var AMPLITUDE_EVENT_PROP_PAGE_URL = '[Amplitude] Page URL';
20
19
  export var AMPLITUDE_EVENT_PROP_PAGE_TITLE = '[Amplitude] Page Title';
21
20
  export var AMPLITUDE_EVENT_PROP_VIEWPORT_HEIGHT = '[Amplitude] Viewport Height';
22
21
  export var AMPLITUDE_EVENT_PROP_VIEWPORT_WIDTH = '[Amplitude] Viewport Width';
23
- export var AMPLITUDE_EVENT_PROP_PAGE_VIEW_ID = '[Amplitude] Page View ID';
24
22
  // Visual Tagging related constants
25
23
  export var AMPLITUDE_ORIGIN = 'https://app.amplitude.com';
26
24
  export var AMPLITUDE_ORIGIN_EU = 'https://app.eu.amplitude.com';
@@ -37,6 +35,5 @@ export var AMPLITUDE_VISUAL_TAGGING_HIGHLIGHT_CLASS = 'amp-visual-tagging-select
37
35
  // Data attribute for specifying which attributes should be redacted from autocapture
38
36
  export var DATA_AMP_MASK_ATTRIBUTES = 'data-amp-mask-attributes';
39
37
  export var MAX_MASK_TEXT_PATTERNS = 25;
40
- // The key for the page view object in sessionStorage
41
- export var PAGE_VIEW_SESSION_STORAGE_KEY = 'AMP_PAGE_VIEW';
38
+ export var MAX_ATTRIBUTE_LENGTH = 128;
42
39
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,WAAW,GAAG,uCAAuC,CAAC;AACnE,MAAM,CAAC,IAAM,uBAAuB,GAAG,uCAAuC,CAAC;AAE/E,MAAM,CAAC,IAAM,+BAA+B,GAAG,6BAA6B,CAAC;AAC7E,MAAM,CAAC,IAAM,oCAAoC,GAAG,wBAAwB,CAAC;AAC7E,MAAM,CAAC,IAAM,oCAAoC,GAAG,wBAAwB,CAAC;AAC7E,MAAM,CAAC,IAAM,+BAA+B,GAAG,6BAA6B,CAAC;AAE7E,MAAM,CAAC,IAAM,+BAA+B,GAAG,wBAAwB,CAAC;AACxE,MAAM,CAAC,IAAM,kCAAkC,GAAG,2BAA2B,CAAC;AAC9E,MAAM,CAAC,IAAM,gCAAgC,GAAG,yBAAyB,CAAC;AAC1E,MAAM,CAAC,IAAM,iCAAiC,GAAG,0BAA0B,CAAC;AAC5E,MAAM,CAAC,IAAM,sCAAsC,GAAG,+BAA+B,CAAC;AACtF,MAAM,CAAC,IAAM,iCAAiC,GAAG,0BAA0B,CAAC;AAC5E,MAAM,CAAC,IAAM,0CAA0C,GAAG,mCAAmC,CAAC;AAC9F,MAAM,CAAC,IAAM,yCAAyC,GAAG,kCAAkC,CAAC;AAC5F,MAAM,CAAC,IAAM,uCAAuC,GAAG,gCAAgC,CAAC;AACxF,MAAM,CAAC,IAAM,uCAAuC,GAAG,gCAAgC,CAAC;AACxF,MAAM,CAAC,IAAM,iCAAiC,GAAG,0BAA0B,CAAC;AAE5E,MAAM,CAAC,IAAM,yCAAyC,GAAG,kCAAkC,CAAC;AAC5F,MAAM,CAAC,IAAM,6BAA6B,GAAG,sBAAsB,CAAC;AACpE,MAAM,CAAC,IAAM,+BAA+B,GAAG,wBAAwB,CAAC;AACxE,MAAM,CAAC,IAAM,oCAAoC,GAAG,6BAA6B,CAAC;AAClF,MAAM,CAAC,IAAM,mCAAmC,GAAG,4BAA4B,CAAC;AAEhF,MAAM,CAAC,IAAM,iCAAiC,GAAG,0BAA0B,CAAC;AAE5E,mCAAmC;AACnC,MAAM,CAAC,IAAM,gBAAgB,GAAG,2BAA2B,CAAC;AAC5D,MAAM,CAAC,IAAM,mBAAmB,GAAG,8BAA8B,CAAC;AAClE,MAAM,CAAC,IAAM,wBAAwB,GAAG,kCAAkC,CAAC;AAC3E,MAAM,CAAC,IAAM,qBAAqB,GAAG;IACnC,EAAE,EAAE,gBAAgB;IACpB,EAAE,EAAE,mBAAmB;IACvB,OAAO,EAAE,wBAAwB;CAClC,CAAC;AAEF,MAAM,CAAC,IAAM,4CAA4C,GACvD,0EAA0E,CAAC;AAC7E,gGAAgG;AAChG,6CAA6C;AAC7C,MAAM,CAAC,IAAM,wCAAwC,GAAG,uCAAuC,CAAC;AAEhG,qFAAqF;AACrF,MAAM,CAAC,IAAM,wBAAwB,GAAG,0BAA0B,CAAC;AAEnE,MAAM,CAAC,IAAM,sBAAsB,GAAG,EAAE,CAAC;AAEzC,qDAAqD;AACrD,MAAM,CAAC,IAAM,6BAA6B,GAAG,eAAe,CAAC","sourcesContent":["export const PLUGIN_NAME = '@amplitude/plugin-autocapture-browser';\nexport const FRUSTRATION_PLUGIN_NAME = '@amplitude/plugin-frustration-browser';\n\nexport const AMPLITUDE_ELEMENT_CLICKED_EVENT = '[Amplitude] Element Clicked';\nexport const AMPLITUDE_ELEMENT_DEAD_CLICKED_EVENT = '[Amplitude] Dead Click';\nexport const AMPLITUDE_ELEMENT_RAGE_CLICKED_EVENT = '[Amplitude] Rage Click';\nexport const AMPLITUDE_ELEMENT_CHANGED_EVENT = '[Amplitude] Element Changed';\n\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_ID = '[Amplitude] Element ID';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_CLASS = '[Amplitude] Element Class';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_TAG = '[Amplitude] Element Tag';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_TEXT = '[Amplitude] Element Text';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_HIERARCHY = '[Amplitude] Element Hierarchy';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_HREF = '[Amplitude] Element Href';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_LEFT = '[Amplitude] Element Position Left';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_TOP = '[Amplitude] Element Position Top';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_ARIA_LABEL = '[Amplitude] Element Aria Label';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_ATTRIBUTES = '[Amplitude] Element Attributes';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_PATH = '[Amplitude] Element Path';\n\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_PARENT_LABEL = '[Amplitude] Element Parent Label';\nexport const AMPLITUDE_EVENT_PROP_PAGE_URL = '[Amplitude] Page URL';\nexport const AMPLITUDE_EVENT_PROP_PAGE_TITLE = '[Amplitude] Page Title';\nexport const AMPLITUDE_EVENT_PROP_VIEWPORT_HEIGHT = '[Amplitude] Viewport Height';\nexport const AMPLITUDE_EVENT_PROP_VIEWPORT_WIDTH = '[Amplitude] Viewport Width';\n\nexport const AMPLITUDE_EVENT_PROP_PAGE_VIEW_ID = '[Amplitude] Page View ID';\n\n// Visual Tagging related constants\nexport const AMPLITUDE_ORIGIN = 'https://app.amplitude.com';\nexport const AMPLITUDE_ORIGIN_EU = 'https://app.eu.amplitude.com';\nexport const AMPLITUDE_ORIGIN_STAGING = 'https://apps.stag2.amplitude.com';\nexport const AMPLITUDE_ORIGINS_MAP = {\n US: AMPLITUDE_ORIGIN,\n EU: AMPLITUDE_ORIGIN_EU,\n STAGING: AMPLITUDE_ORIGIN_STAGING,\n};\n\nexport const AMPLITUDE_VISUAL_TAGGING_SELECTOR_SCRIPT_URL =\n 'https://cdn.amplitude.com/libs/visual-tagging-selector-1.0.0-alpha.js.gz';\n// This is the class name used by the visual tagging selector to highlight the selected element.\n// Should not use this class in the selector.\nexport const AMPLITUDE_VISUAL_TAGGING_HIGHLIGHT_CLASS = 'amp-visual-tagging-selector-highlight';\n\n// Data attribute for specifying which attributes should be redacted from autocapture\nexport const DATA_AMP_MASK_ATTRIBUTES = 'data-amp-mask-attributes';\n\nexport const MAX_MASK_TEXT_PATTERNS = 25;\n\n// The key for the page view object in sessionStorage\nexport const PAGE_VIEW_SESSION_STORAGE_KEY = 'AMP_PAGE_VIEW';\n"]}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,WAAW,GAAG,uCAAuC,CAAC;AACnE,MAAM,CAAC,IAAM,uBAAuB,GAAG,uCAAuC,CAAC;AAE/E,MAAM,CAAC,IAAM,+BAA+B,GAAG,6BAA6B,CAAC;AAC7E,MAAM,CAAC,IAAM,oCAAoC,GAAG,wBAAwB,CAAC;AAC7E,MAAM,CAAC,IAAM,oCAAoC,GAAG,wBAAwB,CAAC;AAC7E,MAAM,CAAC,IAAM,+BAA+B,GAAG,6BAA6B,CAAC;AAE7E,MAAM,CAAC,IAAM,+BAA+B,GAAG,wBAAwB,CAAC;AACxE,MAAM,CAAC,IAAM,kCAAkC,GAAG,2BAA2B,CAAC;AAC9E,MAAM,CAAC,IAAM,gCAAgC,GAAG,yBAAyB,CAAC;AAC1E,MAAM,CAAC,IAAM,iCAAiC,GAAG,0BAA0B,CAAC;AAC5E,MAAM,CAAC,IAAM,sCAAsC,GAAG,+BAA+B,CAAC;AACtF,MAAM,CAAC,IAAM,iCAAiC,GAAG,0BAA0B,CAAC;AAC5E,MAAM,CAAC,IAAM,0CAA0C,GAAG,mCAAmC,CAAC;AAC9F,MAAM,CAAC,IAAM,yCAAyC,GAAG,kCAAkC,CAAC;AAC5F,MAAM,CAAC,IAAM,uCAAuC,GAAG,gCAAgC,CAAC;AACxF,MAAM,CAAC,IAAM,uCAAuC,GAAG,gCAAgC,CAAC;AAExF,MAAM,CAAC,IAAM,yCAAyC,GAAG,kCAAkC,CAAC;AAC5F,MAAM,CAAC,IAAM,6BAA6B,GAAG,sBAAsB,CAAC;AACpE,MAAM,CAAC,IAAM,+BAA+B,GAAG,wBAAwB,CAAC;AACxE,MAAM,CAAC,IAAM,oCAAoC,GAAG,6BAA6B,CAAC;AAClF,MAAM,CAAC,IAAM,mCAAmC,GAAG,4BAA4B,CAAC;AAEhF,mCAAmC;AACnC,MAAM,CAAC,IAAM,gBAAgB,GAAG,2BAA2B,CAAC;AAC5D,MAAM,CAAC,IAAM,mBAAmB,GAAG,8BAA8B,CAAC;AAClE,MAAM,CAAC,IAAM,wBAAwB,GAAG,kCAAkC,CAAC;AAC3E,MAAM,CAAC,IAAM,qBAAqB,GAAG;IACnC,EAAE,EAAE,gBAAgB;IACpB,EAAE,EAAE,mBAAmB;IACvB,OAAO,EAAE,wBAAwB;CAClC,CAAC;AAEF,MAAM,CAAC,IAAM,4CAA4C,GACvD,0EAA0E,CAAC;AAC7E,gGAAgG;AAChG,6CAA6C;AAC7C,MAAM,CAAC,IAAM,wCAAwC,GAAG,uCAAuC,CAAC;AAEhG,qFAAqF;AACrF,MAAM,CAAC,IAAM,wBAAwB,GAAG,0BAA0B,CAAC;AAEnE,MAAM,CAAC,IAAM,sBAAsB,GAAG,EAAE,CAAC;AACzC,MAAM,CAAC,IAAM,oBAAoB,GAAG,GAAG,CAAC","sourcesContent":["export const PLUGIN_NAME = '@amplitude/plugin-autocapture-browser';\nexport const FRUSTRATION_PLUGIN_NAME = '@amplitude/plugin-frustration-browser';\n\nexport const AMPLITUDE_ELEMENT_CLICKED_EVENT = '[Amplitude] Element Clicked';\nexport const AMPLITUDE_ELEMENT_DEAD_CLICKED_EVENT = '[Amplitude] Dead Click';\nexport const AMPLITUDE_ELEMENT_RAGE_CLICKED_EVENT = '[Amplitude] Rage Click';\nexport const AMPLITUDE_ELEMENT_CHANGED_EVENT = '[Amplitude] Element Changed';\n\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_ID = '[Amplitude] Element ID';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_CLASS = '[Amplitude] Element Class';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_TAG = '[Amplitude] Element Tag';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_TEXT = '[Amplitude] Element Text';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_HIERARCHY = '[Amplitude] Element Hierarchy';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_HREF = '[Amplitude] Element Href';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_LEFT = '[Amplitude] Element Position Left';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_TOP = '[Amplitude] Element Position Top';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_ARIA_LABEL = '[Amplitude] Element Aria Label';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_ATTRIBUTES = '[Amplitude] Element Attributes';\n\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_PARENT_LABEL = '[Amplitude] Element Parent Label';\nexport const AMPLITUDE_EVENT_PROP_PAGE_URL = '[Amplitude] Page URL';\nexport const AMPLITUDE_EVENT_PROP_PAGE_TITLE = '[Amplitude] Page Title';\nexport const AMPLITUDE_EVENT_PROP_VIEWPORT_HEIGHT = '[Amplitude] Viewport Height';\nexport const AMPLITUDE_EVENT_PROP_VIEWPORT_WIDTH = '[Amplitude] Viewport Width';\n\n// Visual Tagging related constants\nexport const AMPLITUDE_ORIGIN = 'https://app.amplitude.com';\nexport const AMPLITUDE_ORIGIN_EU = 'https://app.eu.amplitude.com';\nexport const AMPLITUDE_ORIGIN_STAGING = 'https://apps.stag2.amplitude.com';\nexport const AMPLITUDE_ORIGINS_MAP = {\n US: AMPLITUDE_ORIGIN,\n EU: AMPLITUDE_ORIGIN_EU,\n STAGING: AMPLITUDE_ORIGIN_STAGING,\n};\n\nexport const AMPLITUDE_VISUAL_TAGGING_SELECTOR_SCRIPT_URL =\n 'https://cdn.amplitude.com/libs/visual-tagging-selector-1.0.0-alpha.js.gz';\n// This is the class name used by the visual tagging selector to highlight the selected element.\n// Should not use this class in the selector.\nexport const AMPLITUDE_VISUAL_TAGGING_HIGHLIGHT_CLASS = 'amp-visual-tagging-selector-highlight';\n\n// Data attribute for specifying which attributes should be redacted from autocapture\nexport const DATA_AMP_MASK_ATTRIBUTES = 'data-amp-mask-attributes';\n\nexport const MAX_MASK_TEXT_PATTERNS = 25;\nexport const MAX_ATTRIBUTE_LENGTH = 128;\n"]}
@@ -16,7 +16,6 @@ export declare class DataExtractor {
16
16
  replaceSensitiveString: (text: string | null) => string;
17
17
  getHierarchy: (element: Element | null) => Hierarchy;
18
18
  getNearestLabel: (element: Element) => string;
19
- getElementPath: (element: Element) => string;
20
19
  getEventProperties: (actionType: ActionType, element: Element, dataAttributePrefix: string) => {
21
20
  [key: string]: unknown;
22
21
  };
@@ -1 +1 @@
1
- {"version":3,"file":"data-extractor.d.ts","sourceRoot":"","sources":["../../src/data-extractor.ts"],"names":[],"mappings":"AACA,OAAO,EACL,0BAA0B,EAC1B,UAAU,EAEV,kBAAkB,EAKnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8DAA8D,CAAC;AAU/F,OAAO,KAAK,EAAwB,4BAA4B,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGjH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAW;IACtD,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;gBAE3B,OAAO,EAAE,0BAA0B,EAAE,OAAO,CAAC,EAAE;QAAE,iBAAiB,EAAE,kBAAkB,CAAA;KAAE;IAuBpG;;;;OAIG;IACH,sBAAsB,SAAU,MAAM,GAAG,IAAI,KAAG,MAAM,CAEpD;IAGF,YAAY,YAAa,OAAO,GAAG,IAAI,eA6CrC;IAEF,eAAe,YAAa,OAAO,KAAG,MAAM,CAiB1C;IAEF,cAAc,YAAa,OAAO,KAAG,MAAM,CAUzC;IAGF,kBAAkB,eAAgB,UAAU,WAAW,OAAO,uBAAuB,MAAM;;MA0DzF;IAEF,4BAA4B,0GAGP,MAAM,EAAE,uBACN,MAAM,6DAuC3B;IAEF,yBAAyB,eAAgB,UAAU,kBAAkB,WAAW,+BAkB9E;IAEF,OAAO,YAAa,OAAO,KAAG,MAAM,CAkBlC;IAGF,gBAAgB,YAAa,OAAO,KAAG,OAAO,MAAM,EAAE,SAAS,CAAC,CAa9D;CACH"}
1
+ {"version":3,"file":"data-extractor.d.ts","sourceRoot":"","sources":["../../src/data-extractor.ts"],"names":[],"mappings":"AACA,OAAO,EACL,0BAA0B,EAC1B,UAAU,EAEV,kBAAkB,EAKnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8DAA8D,CAAC;AAU/F,OAAO,KAAK,EAAwB,4BAA4B,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGjH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAW;IACtD,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;gBAE3B,OAAO,EAAE,0BAA0B,EAAE,OAAO,CAAC,EAAE;QAAE,iBAAiB,EAAE,kBAAkB,CAAA;KAAE;IAuBpG;;;;OAIG;IACH,sBAAsB,SAAU,MAAM,GAAG,IAAI,KAAG,MAAM,CAEpD;IAGF,YAAY,YAAa,OAAO,GAAG,IAAI,eA4CrC;IAEF,eAAe,YAAa,OAAO,KAAG,MAAM,CAiB1C;IAGF,kBAAkB,eAAgB,UAAU,WAAW,OAAO,uBAAuB,MAAM;;MA2CzF;IAEF,4BAA4B,0GAGP,MAAM,EAAE,uBACN,MAAM,6DAuC3B;IAEF,yBAAyB,eAAgB,UAAU,kBAAkB,WAAW,+BAkB9E;IAEF,OAAO,YAAa,OAAO,KAAG,MAAM,CAkBlC;IAGF,gBAAgB,YAAa,OAAO,KAAG,OAAO,MAAM,EAAE,SAAS,CAAC,CAa9D;CACH"}