@atlaskit/react-ufo 3.1.3 → 3.2.0

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 (182) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +11 -0
  3. package/dist/cjs/create-experimental-interaction-metrics-payload/index.js +52 -25
  4. package/dist/cjs/create-payload/index.js +290 -231
  5. package/dist/cjs/interaction-metrics/index.js +61 -23
  6. package/dist/cjs/interaction-metrics/post-interaction-log.js +63 -34
  7. package/dist/cjs/interaction-metrics-init/index.js +10 -7
  8. package/dist/cjs/resource-timing/main.js +3 -3
  9. package/dist/cjs/segment/schedule-on-paint.js +35 -0
  10. package/dist/cjs/segment/segment.js +10 -1
  11. package/dist/cjs/vc/index.js +105 -1
  12. package/dist/cjs/vc/types.js +5 -0
  13. package/dist/cjs/vc/vc-observer/index.js +198 -208
  14. package/dist/cjs/vc/vc-observer-new/entries-timeline/index.js +56 -0
  15. package/dist/cjs/vc/vc-observer-new/get-element-name.js +68 -0
  16. package/dist/cjs/vc/vc-observer-new/index.js +132 -0
  17. package/dist/cjs/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +75 -0
  18. package/dist/cjs/vc/vc-observer-new/metric-calculator/fy25_03/index.js +60 -0
  19. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +274 -0
  20. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +151 -0
  21. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +367 -0
  22. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +397 -0
  23. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +5 -0
  24. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +61 -0
  25. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +151 -0
  26. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +107 -0
  27. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/types.js +5 -0
  28. package/dist/cjs/vc/vc-observer-new/metric-calculator/types.js +5 -0
  29. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.js +16 -0
  30. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.js +16 -0
  31. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.js +16 -0
  32. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/task-yield.js +45 -0
  33. package/dist/cjs/vc/vc-observer-new/types.js +5 -0
  34. package/dist/cjs/vc/vc-observer-new/viewport-observer/index.js +195 -0
  35. package/dist/cjs/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +71 -0
  36. package/dist/cjs/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +65 -0
  37. package/dist/cjs/vc/vc-observer-new/viewport-observer/performance-observer/index.js +58 -0
  38. package/dist/cjs/vc/vc-observer-new/viewport-observer/types.js +1 -0
  39. package/dist/cjs/vc/vc-observer-new/window-event-observer/index.js +54 -0
  40. package/dist/es2019/create-experimental-interaction-metrics-payload/index.js +2 -2
  41. package/dist/es2019/create-payload/index.js +8 -7
  42. package/dist/es2019/interaction-metrics/index.js +3 -3
  43. package/dist/es2019/interaction-metrics/post-interaction-log.js +5 -5
  44. package/dist/es2019/interaction-metrics-init/index.js +10 -7
  45. package/dist/es2019/resource-timing/main.js +3 -3
  46. package/dist/es2019/segment/schedule-on-paint.js +29 -0
  47. package/dist/es2019/segment/segment.js +9 -1
  48. package/dist/es2019/vc/index.js +56 -1
  49. package/dist/es2019/vc/types.js +1 -0
  50. package/dist/es2019/vc/vc-observer/index.js +1 -4
  51. package/dist/es2019/vc/vc-observer-new/entries-timeline/index.js +34 -0
  52. package/dist/es2019/vc/vc-observer-new/get-element-name.js +62 -0
  53. package/dist/es2019/vc/vc-observer-new/index.js +98 -0
  54. package/dist/es2019/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +38 -0
  55. package/dist/es2019/vc/vc-observer-new/metric-calculator/fy25_03/index.js +39 -0
  56. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +194 -0
  57. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +69 -0
  58. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +248 -0
  59. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +261 -0
  60. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +1 -0
  61. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +19 -0
  62. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +98 -0
  63. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +58 -0
  64. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/types.js +1 -0
  65. package/dist/es2019/vc/vc-observer-new/metric-calculator/types.js +1 -0
  66. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.js +9 -0
  67. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.js +9 -0
  68. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.js +10 -0
  69. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/task-yield.js +17 -0
  70. package/dist/es2019/vc/vc-observer-new/types.js +1 -0
  71. package/dist/es2019/vc/vc-observer-new/viewport-observer/index.js +168 -0
  72. package/dist/es2019/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +65 -0
  73. package/dist/es2019/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +48 -0
  74. package/dist/es2019/vc/vc-observer-new/viewport-observer/performance-observer/index.js +41 -0
  75. package/dist/es2019/vc/vc-observer-new/viewport-observer/types.js +0 -0
  76. package/dist/es2019/vc/vc-observer-new/window-event-observer/index.js +36 -0
  77. package/dist/esm/create-experimental-interaction-metrics-payload/index.js +52 -25
  78. package/dist/esm/create-payload/index.js +290 -231
  79. package/dist/esm/interaction-metrics/index.js +61 -23
  80. package/dist/esm/interaction-metrics/post-interaction-log.js +63 -34
  81. package/dist/esm/interaction-metrics-init/index.js +10 -7
  82. package/dist/esm/resource-timing/main.js +3 -3
  83. package/dist/esm/segment/schedule-on-paint.js +29 -0
  84. package/dist/esm/segment/segment.js +10 -1
  85. package/dist/esm/vc/index.js +104 -1
  86. package/dist/esm/vc/types.js +1 -0
  87. package/dist/esm/vc/vc-observer/index.js +198 -208
  88. package/dist/esm/vc/vc-observer-new/entries-timeline/index.js +50 -0
  89. package/dist/esm/vc/vc-observer-new/get-element-name.js +62 -0
  90. package/dist/esm/vc/vc-observer-new/index.js +126 -0
  91. package/dist/esm/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +69 -0
  92. package/dist/esm/vc/vc-observer-new/metric-calculator/fy25_03/index.js +54 -0
  93. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +268 -0
  94. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +143 -0
  95. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +361 -0
  96. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +390 -0
  97. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +1 -0
  98. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +54 -0
  99. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +144 -0
  100. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +100 -0
  101. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/types.js +1 -0
  102. package/dist/esm/vc/vc-observer-new/metric-calculator/types.js +1 -0
  103. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.js +10 -0
  104. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.js +10 -0
  105. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.js +10 -0
  106. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/task-yield.js +38 -0
  107. package/dist/esm/vc/vc-observer-new/types.js +1 -0
  108. package/dist/esm/vc/vc-observer-new/viewport-observer/index.js +189 -0
  109. package/dist/esm/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +65 -0
  110. package/dist/esm/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +59 -0
  111. package/dist/esm/vc/vc-observer-new/viewport-observer/performance-observer/index.js +51 -0
  112. package/dist/esm/vc/vc-observer-new/viewport-observer/types.js +0 -0
  113. package/dist/esm/vc/vc-observer-new/window-event-observer/index.js +48 -0
  114. package/dist/types/common/index.d.ts +1 -0
  115. package/dist/types/create-experimental-interaction-metrics-payload/index.d.ts +3 -2
  116. package/dist/types/create-payload/index.d.ts +4 -4
  117. package/dist/types/interaction-metrics/post-interaction-log.d.ts +3 -2
  118. package/dist/types/segment/schedule-on-paint.d.ts +2 -0
  119. package/dist/types/vc/index.d.ts +3 -3
  120. package/dist/types/vc/types.d.ts +34 -0
  121. package/dist/types/vc/vc-observer/index.d.ts +5 -21
  122. package/dist/types/vc/vc-observer-new/entries-timeline/index.d.ts +13 -0
  123. package/dist/types/vc/vc-observer-new/get-element-name.d.ts +8 -0
  124. package/dist/types/vc/vc-observer-new/index.d.ts +18 -0
  125. package/dist/types/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +9 -0
  126. package/dist/types/vc/vc-observer-new/metric-calculator/fy25_03/index.d.ts +7 -0
  127. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.d.ts +91 -0
  128. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts +4 -0
  129. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.d.ts +39 -0
  130. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts +8 -0
  131. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.d.ts +43 -0
  132. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/index.d.ts +3 -0
  133. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.d.ts +11 -0
  134. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.d.ts +23 -0
  135. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/types.d.ts +9 -0
  136. package/dist/types/vc/vc-observer-new/metric-calculator/types.d.ts +20 -0
  137. package/dist/types/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.d.ts +1 -0
  138. package/dist/types/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.d.ts +1 -0
  139. package/dist/types/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.d.ts +2 -0
  140. package/dist/types/vc/vc-observer-new/metric-calculator/utils/task-yield.d.ts +1 -0
  141. package/dist/types/vc/vc-observer-new/types.d.ts +21 -0
  142. package/dist/types/vc/vc-observer-new/viewport-observer/index.d.ts +22 -0
  143. package/dist/types/vc/vc-observer-new/viewport-observer/intersection-observer/index.d.ts +30 -0
  144. package/dist/types/vc/vc-observer-new/viewport-observer/mutation-observer/index.d.ts +14 -0
  145. package/dist/types/vc/vc-observer-new/viewport-observer/performance-observer/index.d.ts +14 -0
  146. package/dist/types/vc/vc-observer-new/viewport-observer/types.d.ts +10 -0
  147. package/dist/types/vc/vc-observer-new/window-event-observer/index.d.ts +17 -0
  148. package/dist/types-ts4.5/common/index.d.ts +1 -0
  149. package/dist/types-ts4.5/create-experimental-interaction-metrics-payload/index.d.ts +3 -2
  150. package/dist/types-ts4.5/create-payload/index.d.ts +4 -4
  151. package/dist/types-ts4.5/interaction-metrics/post-interaction-log.d.ts +3 -2
  152. package/dist/types-ts4.5/segment/schedule-on-paint.d.ts +2 -0
  153. package/dist/types-ts4.5/vc/index.d.ts +3 -3
  154. package/dist/types-ts4.5/vc/types.d.ts +34 -0
  155. package/dist/types-ts4.5/vc/vc-observer/index.d.ts +5 -21
  156. package/dist/types-ts4.5/vc/vc-observer-new/entries-timeline/index.d.ts +13 -0
  157. package/dist/types-ts4.5/vc/vc-observer-new/get-element-name.d.ts +8 -0
  158. package/dist/types-ts4.5/vc/vc-observer-new/index.d.ts +18 -0
  159. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +9 -0
  160. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/fy25_03/index.d.ts +7 -0
  161. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.d.ts +91 -0
  162. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts +4 -0
  163. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.d.ts +39 -0
  164. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts +8 -0
  165. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.d.ts +43 -0
  166. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/index.d.ts +3 -0
  167. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.d.ts +11 -0
  168. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.d.ts +23 -0
  169. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/types.d.ts +9 -0
  170. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/types.d.ts +20 -0
  171. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.d.ts +1 -0
  172. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.d.ts +1 -0
  173. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.d.ts +2 -0
  174. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/task-yield.d.ts +1 -0
  175. package/dist/types-ts4.5/vc/vc-observer-new/types.d.ts +21 -0
  176. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/index.d.ts +22 -0
  177. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/intersection-observer/index.d.ts +30 -0
  178. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/mutation-observer/index.d.ts +14 -0
  179. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/performance-observer/index.d.ts +14 -0
  180. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/types.d.ts +10 -0
  181. package/dist/types-ts4.5/vc/vc-observer-new/window-event-observer/index.d.ts +17 -0
  182. package/package.json +10 -1
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+ var _entriesTimeline = _interopRequireDefault(require("./entries-timeline"));
14
+ var _getElementName2 = _interopRequireDefault(require("./get-element-name"));
15
+ var _fy25_ = _interopRequireDefault(require("./metric-calculator/fy25_03"));
16
+ var _viewportObserver = _interopRequireDefault(require("./viewport-observer"));
17
+ var _windowEventObserver = _interopRequireDefault(require("./window-event-observer"));
18
+ var DEFAULT_SELECTOR_CONFIG = {
19
+ id: false,
20
+ testId: true,
21
+ role: false,
22
+ className: false,
23
+ dataVC: true
24
+ };
25
+ var VCObserverNew = exports.default = /*#__PURE__*/function () {
26
+ function VCObserverNew(config) {
27
+ var _config$selectorConfi,
28
+ _this = this;
29
+ (0, _classCallCheck2.default)(this, VCObserverNew);
30
+ (0, _defineProperty2.default)(this, "startTime", 0);
31
+ (0, _defineProperty2.default)(this, "viewportObserver", null);
32
+ (0, _defineProperty2.default)(this, "windowEventObserver", null);
33
+ this.entriesTimeline = new _entriesTimeline.default();
34
+ this.selectorConfig = (_config$selectorConfi = config.selectorConfig) !== null && _config$selectorConfi !== void 0 ? _config$selectorConfi : DEFAULT_SELECTOR_CONFIG;
35
+ this.viewportObserver = new _viewportObserver.default({
36
+ onChange: function onChange(onChangeArg) {
37
+ var time = onChangeArg.time,
38
+ type = onChangeArg.type,
39
+ elementRef = onChangeArg.elementRef,
40
+ visible = onChangeArg.visible,
41
+ rect = onChangeArg.rect,
42
+ previousRect = onChangeArg.previousRect,
43
+ mutationData = onChangeArg.mutationData;
44
+ var elementName = 'unknown';
45
+ var element = elementRef.deref();
46
+ if (element) {
47
+ elementName = _this.getElementName(element);
48
+ }
49
+ _this.entriesTimeline.push({
50
+ time: time,
51
+ type: type,
52
+ data: {
53
+ elementName: elementName,
54
+ rect: rect,
55
+ previousRect: previousRect,
56
+ visible: visible,
57
+ attributeName: mutationData === null || mutationData === void 0 ? void 0 : mutationData.attributeName
58
+ }
59
+ });
60
+ }
61
+ });
62
+ this.windowEventObserver = new _windowEventObserver.default({
63
+ onEvent: function onEvent(_ref) {
64
+ var time = _ref.time,
65
+ type = _ref.type;
66
+ _this.entriesTimeline.push({
67
+ time: time,
68
+ type: 'window:event',
69
+ data: {
70
+ eventType: type
71
+ }
72
+ });
73
+ }
74
+ });
75
+ }
76
+ return (0, _createClass2.default)(VCObserverNew, [{
77
+ key: "start",
78
+ value: function start() {
79
+ var _this$viewportObserve, _this$windowEventObse;
80
+ (_this$viewportObserve = this.viewportObserver) === null || _this$viewportObserve === void 0 || _this$viewportObserve.start();
81
+ (_this$windowEventObse = this.windowEventObserver) === null || _this$windowEventObse === void 0 || _this$windowEventObse.start();
82
+ }
83
+ }, {
84
+ key: "stop",
85
+ value: function stop() {
86
+ var _this$viewportObserve2, _this$windowEventObse2;
87
+ (_this$viewportObserve2 = this.viewportObserver) === null || _this$viewportObserve2 === void 0 || _this$viewportObserve2.stop();
88
+ (_this$windowEventObse2 = this.windowEventObserver) === null || _this$windowEventObse2 === void 0 || _this$windowEventObse2.stop();
89
+ }
90
+ }, {
91
+ key: "getVCResult",
92
+ value: function () {
93
+ var _getVCResult = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(param) {
94
+ var start, stop, results, calculator_fy25_03, orderedEntries, fy25_03;
95
+ return _regenerator.default.wrap(function _callee$(_context) {
96
+ while (1) switch (_context.prev = _context.next) {
97
+ case 0:
98
+ start = param.start, stop = param.stop;
99
+ results = [];
100
+ calculator_fy25_03 = new _fy25_.default();
101
+ orderedEntries = this.entriesTimeline.getOrderedEntries({
102
+ start: start,
103
+ stop: stop
104
+ });
105
+ _context.next = 6;
106
+ return calculator_fy25_03.calculate({
107
+ orderedEntries: orderedEntries
108
+ });
109
+ case 6:
110
+ fy25_03 = _context.sent;
111
+ if (fy25_03) {
112
+ results.push(fy25_03);
113
+ }
114
+ return _context.abrupt("return", results);
115
+ case 9:
116
+ case "end":
117
+ return _context.stop();
118
+ }
119
+ }, _callee, this);
120
+ }));
121
+ function getVCResult(_x) {
122
+ return _getVCResult.apply(this, arguments);
123
+ }
124
+ return getVCResult;
125
+ }()
126
+ }, {
127
+ key: "getElementName",
128
+ value: function getElementName(element) {
129
+ return (0, _getElementName2.default)(this.selectorConfig, element);
130
+ }
131
+ }]);
132
+ }();
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
+ var _percentileCalc = _interopRequireDefault(require("./percentile-calc"));
13
+ var _getViewportHeight = _interopRequireDefault(require("./utils/get-viewport-height"));
14
+ var _getViewportWidth = _interopRequireDefault(require("./utils/get-viewport-width"));
15
+ var AbstractVCCalculatorBase = exports.default = /*#__PURE__*/function () {
16
+ function AbstractVCCalculatorBase(revisionNo) {
17
+ (0, _classCallCheck2.default)(this, AbstractVCCalculatorBase);
18
+ this.revisionNo = revisionNo;
19
+ }
20
+ return (0, _createClass2.default)(AbstractVCCalculatorBase, [{
21
+ key: "calculate",
22
+ value: function () {
23
+ var _calculate = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
24
+ var _this = this,
25
+ _vcDetails$90$t,
26
+ _vcDetails$;
27
+ var orderedEntries, filteredEntries, isVCClean, vcDetails;
28
+ return _regenerator.default.wrap(function _callee$(_context) {
29
+ while (1) switch (_context.prev = _context.next) {
30
+ case 0:
31
+ orderedEntries = _ref.orderedEntries;
32
+ filteredEntries = orderedEntries.filter(function (entry) {
33
+ return _this.isEntryIncluded(entry);
34
+ });
35
+ isVCClean = this.isVCClean(filteredEntries);
36
+ if (isVCClean) {
37
+ _context.next = 5;
38
+ break;
39
+ }
40
+ return _context.abrupt("return", {
41
+ revision: this.revisionNo,
42
+ 'metric:vc90': null,
43
+ clean: false
44
+ });
45
+ case 5:
46
+ _context.next = 7;
47
+ return (0, _percentileCalc.default)({
48
+ viewport: {
49
+ width: (0, _getViewportWidth.default)(),
50
+ height: (0, _getViewportHeight.default)()
51
+ },
52
+ orderedEntries: filteredEntries,
53
+ percentiles: [25, 50, 75, 80, 85, 90, 95, 98, 99]
54
+ });
55
+ case 7:
56
+ vcDetails = _context.sent;
57
+ return _context.abrupt("return", {
58
+ revision: this.revisionNo,
59
+ vcDetails: vcDetails !== null && vcDetails !== void 0 ? vcDetails : undefined,
60
+ clean: isVCClean,
61
+ 'metric:vc90': (_vcDetails$90$t = vcDetails === null || vcDetails === void 0 || (_vcDetails$ = vcDetails['90']) === null || _vcDetails$ === void 0 ? void 0 : _vcDetails$.t) !== null && _vcDetails$90$t !== void 0 ? _vcDetails$90$t : null
62
+ });
63
+ case 9:
64
+ case "end":
65
+ return _context.stop();
66
+ }
67
+ }, _callee, this);
68
+ }));
69
+ function calculate(_x) {
70
+ return _calculate.apply(this, arguments);
71
+ }
72
+ return calculate;
73
+ }()
74
+ }]);
75
+ }();
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
11
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
12
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
13
+ var _abstractBaseVcCalculator = _interopRequireDefault(require("../abstract-base-vc-calculator"));
14
+ var _isViewportEntryData = _interopRequireDefault(require("../utils/is-viewport-entry-data"));
15
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
16
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
17
+ var ABORTING_WINDOW_EVENT = ['wheel', 'scroll', 'keydown', 'resize'];
18
+ var REVISION_NO = 'fy25.03';
19
+ var CONSIDERED_ENTRY_TYPE = ['mutation:child-element', 'mutation:element', 'mutation:attribute', 'layout-shift', 'window:event'];
20
+ var VCCalculator_FY25_03 = exports.default = /*#__PURE__*/function (_AbstractVCCalculator) {
21
+ function VCCalculator_FY25_03() {
22
+ (0, _classCallCheck2.default)(this, VCCalculator_FY25_03);
23
+ return _callSuper(this, VCCalculator_FY25_03, [REVISION_NO]);
24
+ }
25
+ (0, _inherits2.default)(VCCalculator_FY25_03, _AbstractVCCalculator);
26
+ return (0, _createClass2.default)(VCCalculator_FY25_03, [{
27
+ key: "isEntryIncluded",
28
+ value: function isEntryIncluded(entry) {
29
+ if (!CONSIDERED_ENTRY_TYPE.includes(entry.type)) {
30
+ return false;
31
+ }
32
+ if (entry.type === 'mutation:attribute') {
33
+ var entryData = entry.data;
34
+ var attributeName = entryData.attributeName;
35
+ if (!attributeName) {
36
+ return false;
37
+ }
38
+ return true;
39
+ }
40
+ if ((0, _isViewportEntryData.default)(entry.data) && !entry.data.visible) {
41
+ return false;
42
+ }
43
+ return true;
44
+ }
45
+ }, {
46
+ key: "isVCClean",
47
+ value: function isVCClean(filteredEntries) {
48
+ var hasAbortEvent = filteredEntries.some(function (entry) {
49
+ if (entry.type === 'window:event') {
50
+ var data = entry.data;
51
+ if (ABORTING_WINDOW_EVENT.includes(data.eventType)) {
52
+ return true;
53
+ }
54
+ }
55
+ return false;
56
+ });
57
+ return !hasAbortEvent;
58
+ }
59
+ }]);
60
+ }(_abstractBaseVcCalculator.default);
@@ -0,0 +1,274 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ViewportCanvas = void 0;
8
+ exports.calculateDrawnPixelsRaw = calculateDrawnPixelsRaw;
9
+ exports.getRGBComponents = getRGBComponents;
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
14
+ var _taskYield = _interopRequireDefault(require("../../utils/task-yield"));
15
+ // 24-bit color value
16
+ /**
17
+ * Class responsible for managing a scaled canvas and tracking pixel drawing operations.
18
+ * It uses an OffscreenCanvas for better performance and maintains a mapping between
19
+ * colors and timestamps for pixel counting purposes.
20
+ */
21
+ var ViewportCanvas = exports.ViewportCanvas = /*#__PURE__*/function () {
22
+ /** The underlying OffscreenCanvas instance */
23
+
24
+ /** The 2D rendering context of the canvas */
25
+
26
+ /** Scale factor applied to the canvas (affects final pixel counts) */
27
+
28
+ /** Maps unique colors to their corresponding timestamps */
29
+
30
+ /** Counter used to generate unique colors */
31
+
32
+ /**
33
+ * Creates a new ViewportCanvas instance.
34
+ * @param viewport - The dimensions of the viewport
35
+ * @param scaleFactor - Scale factor to apply to the canvas (default: 0.5)
36
+ * @throws {Error} If canvas context cannot be obtained
37
+ */
38
+ function ViewportCanvas(viewport) {
39
+ var scaleFactor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
40
+ (0, _classCallCheck2.default)(this, ViewportCanvas);
41
+ this.scaleFactor = scaleFactor;
42
+ this.colorCounter = 1;
43
+ this.colorTimeMap = new Map();
44
+
45
+ // Calculate scaled dimensions
46
+ this.scaledWidth = Math.ceil(viewport.width * scaleFactor);
47
+ this.scaledHeight = Math.ceil(viewport.height * scaleFactor);
48
+ this.scaleX = this.scaledWidth / viewport.width;
49
+ this.scaleY = this.scaledHeight / viewport.height;
50
+
51
+ // Initialize OffscreenCanvas with scaled dimensions
52
+ this.canvas = document.createElement('canvas');
53
+ this.canvas.width = this.scaledWidth;
54
+ this.canvas.height = this.scaledHeight;
55
+ var ctx = this.canvas.getContext('2d', {
56
+ alpha: false,
57
+ // Disable alpha channel for better performance
58
+ willReadFrequently: true,
59
+ // Optimize for frequent pixel reading
60
+ colorSpace: 'srgb' // Use standard RGB color space
61
+ });
62
+ if (!ctx) {
63
+ throw new Error('Could not get canvas context');
64
+ }
65
+ this.ctx = ctx;
66
+ this.ctx.globalCompositeOperation = "source-over";
67
+ this.clear();
68
+ }
69
+ return (0, _createClass2.default)(ViewportCanvas, [{
70
+ key: "getScaledDimensions",
71
+ value: function getScaledDimensions() {
72
+ return {
73
+ width: this.scaledWidth,
74
+ height: this.scaledHeight
75
+ };
76
+ }
77
+
78
+ /**
79
+ * Clears the entire canvas by removing all drawn content.
80
+ * @private
81
+ */
82
+ }, {
83
+ key: "clear",
84
+ value: function clear() {
85
+ this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
86
+ }
87
+
88
+ /**
89
+ * Generates a unique RGB color from an incrementing counter.
90
+ * Uses a 24-bit color space (16,777,216 possible colors).
91
+ *
92
+ * @private
93
+ * @returns A unique RGB color string
94
+ *
95
+ * @example
96
+ * // Example bit operations for color 0x00FF8040:
97
+ * // Red: (0x00FF8040 >> 16) & 0xFF = 0xFF = 255
98
+ * // Green: (0x00FF8040 >> 8) & 0xFF = 0x80 = 128
99
+ * // Blue: 0x00FF8040 & 0xFF = 0x40 = 64
100
+ */
101
+ }, {
102
+ key: "generateColor",
103
+ value: function generateColor() {
104
+ // Wrap around at 16,777,215 (0x00FFFFFF) to stay within 24-bit color space
105
+ var rgbColor = this.colorCounter++ % 0x00ffffff;
106
+ return getRGBComponents(rgbColor);
107
+ }
108
+
109
+ /**
110
+ * Draws a rectangle on the canvas with a unique color and associates it with a timestamp.
111
+ * Each drawn rectangle gets a unique color which is mapped to the provided timestamp.
112
+ *
113
+ * @param rect - The rectangle dimensions to draw
114
+ * @param timestamp - The timestamp to associate with this drawing operation
115
+ */
116
+ }, {
117
+ key: "drawRect",
118
+ value: function drawRect(rect, timestamp) {
119
+ var color = this.generateColor();
120
+ this.colorTimeMap.set(color, timestamp);
121
+ this.ctx.fillStyle = color;
122
+ if (this.scaleFactor === 1) {
123
+ return this.ctx.fillRect(rect.x, rect.y, rect.width, rect.height);
124
+ }
125
+ var scaledX = rect.x * this.scaleX;
126
+ var scaledY = rect.y * this.scaleY;
127
+ var scaledWidth = rect.width * this.scaleX;
128
+ var scaledHeight = rect.height * this.scaleY;
129
+ this.ctx.fillRect(Math.floor(scaledX), Math.ceil(scaledY), Math.max(scaledWidth, 1), Math.max(scaledHeight, 1));
130
+ }
131
+
132
+ /**
133
+ * Calculates the number of pixels drawn for each timestamp.
134
+ * This method:
135
+ * 1. Reads the pixel data from the canvas
136
+ * 2. Counts pixels of each unique color
137
+ * 3. Maps colors back to their timestamps
138
+ * 4. Adjusts counts based on the scale factor
139
+ *
140
+ * @returns A Map containing timestamp to pixel count mappings
141
+ */
142
+ }, {
143
+ key: "getPixelCounts",
144
+ value: (function () {
145
+ var _getPixelCounts = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
146
+ var imageData, timestampsAmount, pixelCounts, timePixelCounts, i, count, color, rgbColor, timestamp;
147
+ return _regenerator.default.wrap(function _callee$(_context) {
148
+ while (1) switch (_context.prev = _context.next) {
149
+ case 0:
150
+ imageData = this.ctx.getImageData(0, 0, this.canvas.width, this.canvas.height);
151
+ timestampsAmount = this.colorTimeMap.size;
152
+ _context.next = 4;
153
+ return calculateDrawnPixelsRaw(imageData, this.scaleFactor, timestampsAmount);
154
+ case 4:
155
+ pixelCounts = _context.sent;
156
+ // Convert color counts to timestamp counts
157
+ timePixelCounts = new Map();
158
+ i = 0;
159
+ case 7:
160
+ if (!(i < pixelCounts.length)) {
161
+ _context.next = 18;
162
+ break;
163
+ }
164
+ count = pixelCounts[i];
165
+ if (!(typeof count !== 'number')) {
166
+ _context.next = 11;
167
+ break;
168
+ }
169
+ return _context.abrupt("continue", 15);
170
+ case 11:
171
+ color = i + 1;
172
+ rgbColor = getRGBComponents(color);
173
+ timestamp = this.colorTimeMap.get(rgbColor);
174
+ if (timestamp !== undefined) {
175
+ timePixelCounts.set(timestamp, (timePixelCounts.get(timestamp) || 0) + count);
176
+ }
177
+ case 15:
178
+ i++;
179
+ _context.next = 7;
180
+ break;
181
+ case 18:
182
+ return _context.abrupt("return", timePixelCounts);
183
+ case 19:
184
+ case "end":
185
+ return _context.stop();
186
+ }
187
+ }, _callee, this);
188
+ }));
189
+ function getPixelCounts() {
190
+ return _getPixelCounts.apply(this, arguments);
191
+ }
192
+ return getPixelCounts;
193
+ }())
194
+ }]);
195
+ }();
196
+ /**
197
+ * Converts a number into RGB components in such a way that they can be recombined
198
+ * to form the original number using bitwise operations.
199
+ * @param number - The input number to be split into RGB components.
200
+ * @returns The RGB color string in the format "rgb(r, g, b)".
201
+ */
202
+ function getRGBComponents(n) {
203
+ // Ensure the input is within the valid range for a 24-bit color
204
+ if (n < 0 || n > 0xffffff) {
205
+ throw new Error('Input number must be between 0 and 16777215 (inclusive).');
206
+ }
207
+
208
+ // Extract blue component (bits 0-7)
209
+ var blue = n & 0xff;
210
+
211
+ // Extract green component (bits 8-15)
212
+ var green = n >> 8 & 0xff;
213
+
214
+ // Extract red component (bits 16-23)
215
+ var red = n >> 16 & 0xff;
216
+ return "rgb(".concat(red, ", ").concat(green, ", ").concat(blue, ")");
217
+ }
218
+
219
+ /**
220
+ * Calculates the number of pixels drawn for each color in the image data.
221
+ * @param imageData - The image data to analyze.
222
+ * @param scaleFactor - The scale factor applied to the canvas.
223
+ * @param arraySize - The amount of timestamps that were drawn in the viewport
224
+ * @returns A Map containing color to pixel count mappings.
225
+ */
226
+ function calculateDrawnPixelsRaw(_x, _x2, _x3) {
227
+ return _calculateDrawnPixelsRaw.apply(this, arguments);
228
+ }
229
+ function _calculateDrawnPixelsRaw() {
230
+ _calculateDrawnPixelsRaw = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(imageData, scaleFactor, arraySize) {
231
+ var data, scaleCompensation, arr, i, color, colorIndex;
232
+ return _regenerator.default.wrap(function _callee2$(_context2) {
233
+ while (1) switch (_context2.prev = _context2.next) {
234
+ case 0:
235
+ data = imageData.data;
236
+ scaleCompensation = Math.round(1 / (scaleFactor * scaleFactor));
237
+ arr = new Uint32Array(arraySize);
238
+ i = 0;
239
+ case 4:
240
+ if (!(i < data.length)) {
241
+ _context2.next = 12;
242
+ break;
243
+ }
244
+ // Check alpha
245
+ if (data[i + 3] !== 0) {
246
+ // Combine RGB components into a single 24-bit color value:
247
+ // (data[i] << 16) - Shift red component left 16 bits (bits 16-23)
248
+ // (data[i + 1] << 8) - Shift green component left 8 bits (bits 8-15)
249
+ // data[i + 2] - Blue component stays as is (bits 0-7)
250
+ // The | operator combines all bits together
251
+ color = data[i] << 16 | data[i + 1] << 8 | data[i + 2];
252
+ colorIndex = color - 1;
253
+ arr[colorIndex] = (arr[colorIndex] || 0) + scaleCompensation;
254
+ }
255
+ if (!(i % 10000 === 0)) {
256
+ _context2.next = 9;
257
+ break;
258
+ }
259
+ _context2.next = 9;
260
+ return (0, _taskYield.default)();
261
+ case 9:
262
+ i += 4;
263
+ _context2.next = 4;
264
+ break;
265
+ case 12:
266
+ return _context2.abrupt("return", arr);
267
+ case 13:
268
+ case "end":
269
+ return _context2.stop();
270
+ }
271
+ }, _callee2);
272
+ }));
273
+ return _calculateDrawnPixelsRaw.apply(this, arguments);
274
+ }