@atlaskit/react-ufo 3.1.4 → 3.3.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 (179) 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 +26 -7
  8. package/dist/cjs/segment/schedule-on-paint.js +35 -0
  9. package/dist/cjs/segment/segment.js +10 -1
  10. package/dist/cjs/vc/index.js +105 -1
  11. package/dist/cjs/vc/types.js +5 -0
  12. package/dist/cjs/vc/vc-observer/index.js +198 -208
  13. package/dist/cjs/vc/vc-observer-new/entries-timeline/index.js +56 -0
  14. package/dist/cjs/vc/vc-observer-new/get-element-name.js +68 -0
  15. package/dist/cjs/vc/vc-observer-new/index.js +132 -0
  16. package/dist/cjs/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +75 -0
  17. package/dist/cjs/vc/vc-observer-new/metric-calculator/fy25_03/index.js +60 -0
  18. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +274 -0
  19. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +151 -0
  20. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +367 -0
  21. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +397 -0
  22. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +5 -0
  23. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +61 -0
  24. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +151 -0
  25. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +107 -0
  26. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/types.js +5 -0
  27. package/dist/cjs/vc/vc-observer-new/metric-calculator/types.js +5 -0
  28. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.js +16 -0
  29. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.js +16 -0
  30. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.js +16 -0
  31. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/task-yield.js +45 -0
  32. package/dist/cjs/vc/vc-observer-new/types.js +5 -0
  33. package/dist/cjs/vc/vc-observer-new/viewport-observer/index.js +195 -0
  34. package/dist/cjs/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +71 -0
  35. package/dist/cjs/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +65 -0
  36. package/dist/cjs/vc/vc-observer-new/viewport-observer/performance-observer/index.js +58 -0
  37. package/dist/cjs/vc/vc-observer-new/viewport-observer/types.js +1 -0
  38. package/dist/cjs/vc/vc-observer-new/window-event-observer/index.js +54 -0
  39. package/dist/es2019/create-experimental-interaction-metrics-payload/index.js +2 -2
  40. package/dist/es2019/create-payload/index.js +8 -7
  41. package/dist/es2019/interaction-metrics/index.js +3 -3
  42. package/dist/es2019/interaction-metrics/post-interaction-log.js +5 -5
  43. package/dist/es2019/interaction-metrics-init/index.js +26 -7
  44. package/dist/es2019/segment/schedule-on-paint.js +29 -0
  45. package/dist/es2019/segment/segment.js +9 -1
  46. package/dist/es2019/vc/index.js +56 -1
  47. package/dist/es2019/vc/types.js +1 -0
  48. package/dist/es2019/vc/vc-observer/index.js +1 -4
  49. package/dist/es2019/vc/vc-observer-new/entries-timeline/index.js +34 -0
  50. package/dist/es2019/vc/vc-observer-new/get-element-name.js +62 -0
  51. package/dist/es2019/vc/vc-observer-new/index.js +98 -0
  52. package/dist/es2019/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +38 -0
  53. package/dist/es2019/vc/vc-observer-new/metric-calculator/fy25_03/index.js +39 -0
  54. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +194 -0
  55. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +69 -0
  56. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +248 -0
  57. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +261 -0
  58. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +1 -0
  59. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +19 -0
  60. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +98 -0
  61. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +58 -0
  62. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/types.js +1 -0
  63. package/dist/es2019/vc/vc-observer-new/metric-calculator/types.js +1 -0
  64. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.js +9 -0
  65. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.js +9 -0
  66. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.js +10 -0
  67. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/task-yield.js +17 -0
  68. package/dist/es2019/vc/vc-observer-new/types.js +1 -0
  69. package/dist/es2019/vc/vc-observer-new/viewport-observer/index.js +168 -0
  70. package/dist/es2019/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +65 -0
  71. package/dist/es2019/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +48 -0
  72. package/dist/es2019/vc/vc-observer-new/viewport-observer/performance-observer/index.js +41 -0
  73. package/dist/es2019/vc/vc-observer-new/viewport-observer/types.js +0 -0
  74. package/dist/es2019/vc/vc-observer-new/window-event-observer/index.js +36 -0
  75. package/dist/esm/create-experimental-interaction-metrics-payload/index.js +52 -25
  76. package/dist/esm/create-payload/index.js +290 -231
  77. package/dist/esm/interaction-metrics/index.js +61 -23
  78. package/dist/esm/interaction-metrics/post-interaction-log.js +63 -34
  79. package/dist/esm/interaction-metrics-init/index.js +26 -7
  80. package/dist/esm/segment/schedule-on-paint.js +29 -0
  81. package/dist/esm/segment/segment.js +10 -1
  82. package/dist/esm/vc/index.js +104 -1
  83. package/dist/esm/vc/types.js +1 -0
  84. package/dist/esm/vc/vc-observer/index.js +198 -208
  85. package/dist/esm/vc/vc-observer-new/entries-timeline/index.js +50 -0
  86. package/dist/esm/vc/vc-observer-new/get-element-name.js +62 -0
  87. package/dist/esm/vc/vc-observer-new/index.js +126 -0
  88. package/dist/esm/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +69 -0
  89. package/dist/esm/vc/vc-observer-new/metric-calculator/fy25_03/index.js +54 -0
  90. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +268 -0
  91. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +143 -0
  92. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +361 -0
  93. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +390 -0
  94. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +1 -0
  95. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +54 -0
  96. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +144 -0
  97. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +100 -0
  98. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/types.js +1 -0
  99. package/dist/esm/vc/vc-observer-new/metric-calculator/types.js +1 -0
  100. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.js +10 -0
  101. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.js +10 -0
  102. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.js +10 -0
  103. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/task-yield.js +38 -0
  104. package/dist/esm/vc/vc-observer-new/types.js +1 -0
  105. package/dist/esm/vc/vc-observer-new/viewport-observer/index.js +189 -0
  106. package/dist/esm/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +65 -0
  107. package/dist/esm/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +59 -0
  108. package/dist/esm/vc/vc-observer-new/viewport-observer/performance-observer/index.js +51 -0
  109. package/dist/esm/vc/vc-observer-new/viewport-observer/types.js +0 -0
  110. package/dist/esm/vc/vc-observer-new/window-event-observer/index.js +48 -0
  111. package/dist/types/common/index.d.ts +1 -0
  112. package/dist/types/create-experimental-interaction-metrics-payload/index.d.ts +3 -2
  113. package/dist/types/create-payload/index.d.ts +4 -4
  114. package/dist/types/interaction-metrics/post-interaction-log.d.ts +3 -2
  115. package/dist/types/segment/schedule-on-paint.d.ts +2 -0
  116. package/dist/types/vc/index.d.ts +3 -3
  117. package/dist/types/vc/types.d.ts +34 -0
  118. package/dist/types/vc/vc-observer/index.d.ts +5 -21
  119. package/dist/types/vc/vc-observer-new/entries-timeline/index.d.ts +13 -0
  120. package/dist/types/vc/vc-observer-new/get-element-name.d.ts +8 -0
  121. package/dist/types/vc/vc-observer-new/index.d.ts +18 -0
  122. package/dist/types/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +9 -0
  123. package/dist/types/vc/vc-observer-new/metric-calculator/fy25_03/index.d.ts +7 -0
  124. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.d.ts +91 -0
  125. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts +4 -0
  126. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.d.ts +39 -0
  127. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts +8 -0
  128. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.d.ts +43 -0
  129. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/index.d.ts +3 -0
  130. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.d.ts +11 -0
  131. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.d.ts +23 -0
  132. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/types.d.ts +9 -0
  133. package/dist/types/vc/vc-observer-new/metric-calculator/types.d.ts +20 -0
  134. package/dist/types/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.d.ts +1 -0
  135. package/dist/types/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.d.ts +1 -0
  136. package/dist/types/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.d.ts +2 -0
  137. package/dist/types/vc/vc-observer-new/metric-calculator/utils/task-yield.d.ts +1 -0
  138. package/dist/types/vc/vc-observer-new/types.d.ts +21 -0
  139. package/dist/types/vc/vc-observer-new/viewport-observer/index.d.ts +22 -0
  140. package/dist/types/vc/vc-observer-new/viewport-observer/intersection-observer/index.d.ts +30 -0
  141. package/dist/types/vc/vc-observer-new/viewport-observer/mutation-observer/index.d.ts +14 -0
  142. package/dist/types/vc/vc-observer-new/viewport-observer/performance-observer/index.d.ts +14 -0
  143. package/dist/types/vc/vc-observer-new/viewport-observer/types.d.ts +10 -0
  144. package/dist/types/vc/vc-observer-new/window-event-observer/index.d.ts +17 -0
  145. package/dist/types-ts4.5/common/index.d.ts +1 -0
  146. package/dist/types-ts4.5/create-experimental-interaction-metrics-payload/index.d.ts +3 -2
  147. package/dist/types-ts4.5/create-payload/index.d.ts +4 -4
  148. package/dist/types-ts4.5/interaction-metrics/post-interaction-log.d.ts +3 -2
  149. package/dist/types-ts4.5/segment/schedule-on-paint.d.ts +2 -0
  150. package/dist/types-ts4.5/vc/index.d.ts +3 -3
  151. package/dist/types-ts4.5/vc/types.d.ts +34 -0
  152. package/dist/types-ts4.5/vc/vc-observer/index.d.ts +5 -21
  153. package/dist/types-ts4.5/vc/vc-observer-new/entries-timeline/index.d.ts +13 -0
  154. package/dist/types-ts4.5/vc/vc-observer-new/get-element-name.d.ts +8 -0
  155. package/dist/types-ts4.5/vc/vc-observer-new/index.d.ts +18 -0
  156. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +9 -0
  157. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/fy25_03/index.d.ts +7 -0
  158. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.d.ts +91 -0
  159. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts +4 -0
  160. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.d.ts +39 -0
  161. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts +8 -0
  162. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.d.ts +43 -0
  163. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/index.d.ts +3 -0
  164. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.d.ts +11 -0
  165. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.d.ts +23 -0
  166. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/types.d.ts +9 -0
  167. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/types.d.ts +20 -0
  168. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.d.ts +1 -0
  169. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.d.ts +1 -0
  170. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.d.ts +2 -0
  171. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/task-yield.d.ts +1 -0
  172. package/dist/types-ts4.5/vc/vc-observer-new/types.d.ts +21 -0
  173. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/index.d.ts +22 -0
  174. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/intersection-observer/index.d.ts +30 -0
  175. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/mutation-observer/index.d.ts +14 -0
  176. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/performance-observer/index.d.ts +14 -0
  177. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/types.d.ts +10 -0
  178. package/dist/types-ts4.5/vc/vc-observer-new/window-event-observer/index.d.ts +17 -0
  179. package/package.json +13 -1
@@ -0,0 +1,361 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
4
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
5
+ import _createClass from "@babel/runtime/helpers/createClass";
6
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
7
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
9
+ import isViewportEntryData from '../../utils/is-viewport-entry-data';
10
+ import taskYield from '../../utils/task-yield';
11
+ var MAX_HEATMAP_SIZE = 1000;
12
+ function createEmptyHeatmapEntry() {
13
+ return {
14
+ head: null,
15
+ previousEntries: []
16
+ };
17
+ }
18
+ function createEmptyMap(heatmapWidth, heatmapHeight) {
19
+ return Array.from({
20
+ length: heatmapHeight
21
+ }).map(function () {
22
+ return Array.from({
23
+ length: heatmapWidth
24
+ }).map(createEmptyHeatmapEntry);
25
+ });
26
+ }
27
+ function isRectInside(a, b) {
28
+ if (!a || !b) {
29
+ return false;
30
+ }
31
+
32
+ // Check if all corners of rectangle a are within the bounds of rectangle b
33
+ return a.left >= b.left && a.right <= b.right && a.top >= b.top && a.bottom <= b.bottom;
34
+ }
35
+ var Heatmap = /*#__PURE__*/function () {
36
+ /**
37
+ * Heatmap Width
38
+ */
39
+
40
+ /**
41
+ * Heatmap Height
42
+ */
43
+
44
+ /**
45
+ * Heatmap Area (width * height)
46
+ */
47
+
48
+ function Heatmap(_ref) {
49
+ var viewport = _ref.viewport,
50
+ heatmapSize = _ref.heatmapSize;
51
+ _classCallCheck(this, Heatmap);
52
+ // TODO timeOrigin? do we need? for SSR??
53
+ this.viewport = viewport;
54
+ var safeSize = Math.min(heatmapSize, MAX_HEATMAP_SIZE);
55
+ if (viewport.width === 0 || viewport.height === 0) {
56
+ this.width = safeSize;
57
+ this.height = safeSize;
58
+ this.scaleX = 1;
59
+ this.scaleY = 1;
60
+ this.heatmapAreaSize = 0;
61
+ this.map = createEmptyMap(safeSize, safeSize);
62
+ return;
63
+ }
64
+ var aspectRatio = viewport.width / viewport.height;
65
+ if (aspectRatio > 1) {
66
+ // Landscape orientation
67
+ this.width = safeSize;
68
+ this.height = Math.round(safeSize / aspectRatio);
69
+ } else {
70
+ // Portrait orientation
71
+ this.width = safeSize;
72
+ this.height = Math.round(safeSize * aspectRatio);
73
+ }
74
+ this.scaleX = this.width / viewport.width;
75
+ this.scaleY = this.height / viewport.height;
76
+ this.heatmapAreaSize = this.width * this.height;
77
+ this.map = createEmptyMap(this.width, this.height);
78
+ }
79
+ return _createClass(Heatmap, [{
80
+ key: "getHeatmap",
81
+ value: function getHeatmap() {
82
+ return this.map;
83
+ }
84
+ }, {
85
+ key: "getCell",
86
+ value: function getCell(row, col) {
87
+ var _this$map$row;
88
+ return (_this$map$row = this.map[row]) === null || _this$map$row === void 0 ? void 0 : _this$map$row[col];
89
+ }
90
+
91
+ /**
92
+ * Map Dom Rect to Heatmap Rect, rounded up to occupy full cell.
93
+ * @param rect DOM Rect
94
+ * @returns
95
+ */
96
+ }, {
97
+ key: "mapDOMRectToHeatmap",
98
+ value: function mapDOMRectToHeatmap(rect) {
99
+ var scaledX = rect.x * this.scaleX;
100
+ var scaledY = rect.y * this.scaleY;
101
+ var scaledWidth = rect.width * this.scaleX;
102
+ var scaledHeight = rect.height * this.scaleY;
103
+ return {
104
+ left: Math.floor(scaledX),
105
+ right: Math.ceil(scaledX + scaledWidth),
106
+ top: Math.floor(scaledY),
107
+ bottom: Math.ceil(scaledY + scaledHeight)
108
+ };
109
+ }
110
+
111
+ /**
112
+ * Calculate the ratio of a HeatmapRect compared to the full heatmap
113
+ *
114
+ * This function determines what fraction of the heatmap is covered by the given heatmap rectangle.
115
+ *
116
+ * @param rect
117
+ */
118
+ }, {
119
+ key: "getRatio",
120
+ value: function getRatio(rect) {
121
+ if (this.viewport.width === 0 || this.viewport.height === 0) {
122
+ return 0;
123
+ }
124
+ var right = rect.right,
125
+ left = rect.left,
126
+ bottom = rect.bottom,
127
+ top = rect.top;
128
+ var rectWidth = right - left;
129
+ var rectHeight = bottom - top;
130
+ var rectArea = rectWidth * rectHeight;
131
+ var ratio = rectArea / this.heatmapAreaSize;
132
+ if (ratio > 1) {
133
+ return 1;
134
+ }
135
+ return ratio;
136
+ }
137
+ }, {
138
+ key: "applyEntriesToHeatmap",
139
+ value: function () {
140
+ var _applyEntriesToHeatmap = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(entries) {
141
+ var i, entry, time, type, data, rect, ratio, heatmapEntryData, roundedTop, roundedBottom, roundedLeft, roundedRight, row, col, cell, previousEntry;
142
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
143
+ while (1) switch (_context.prev = _context.next) {
144
+ case 0:
145
+ i = 0;
146
+ case 1:
147
+ if (!(i < entries.length)) {
148
+ _context.next = 37;
149
+ break;
150
+ }
151
+ entry = entries[i];
152
+ time = entry.time, type = entry.type, data = entry.data;
153
+ if (!isViewportEntryData(data)) {
154
+ _context.next = 31;
155
+ break;
156
+ }
157
+ rect = this.mapDOMRectToHeatmap(data.rect);
158
+ ratio = this.getRatio(rect);
159
+ heatmapEntryData = {
160
+ time: time,
161
+ elementName: data.elementName,
162
+ ratio: ratio !== null && ratio !== void 0 ? ratio : null,
163
+ rect: rect,
164
+ source: type
165
+ };
166
+ roundedTop = Math.floor(rect.top);
167
+ roundedBottom = Math.min(rect.bottom, this.height);
168
+ roundedLeft = Math.floor(rect.left);
169
+ roundedRight = Math.min(rect.right, this.width);
170
+ row = roundedTop;
171
+ case 13:
172
+ if (!(row < roundedBottom)) {
173
+ _context.next = 31;
174
+ break;
175
+ }
176
+ col = roundedLeft;
177
+ case 15:
178
+ if (!(col < roundedRight)) {
179
+ _context.next = 28;
180
+ break;
181
+ }
182
+ cell = this.getCell(row, col);
183
+ if (cell) {
184
+ _context.next = 19;
185
+ break;
186
+ }
187
+ return _context.abrupt("continue", 25);
188
+ case 19:
189
+ previousEntry = cell.head; // When elements are added at the same time
190
+ // we try to keep the inner element changes as the head
191
+ if (!((previousEntry === null || previousEntry === void 0 ? void 0 : previousEntry.time) === entry.time && isRectInside(previousEntry.rect, heatmapEntryData.rect))) {
192
+ _context.next = 23;
193
+ break;
194
+ }
195
+ cell.previousEntries.push(_objectSpread(_objectSpread({}, heatmapEntryData), {}, {
196
+ source: 'mutation:parent-mounted'
197
+ }));
198
+ return _context.abrupt("continue", 25);
199
+ case 23:
200
+ cell.head = _objectSpread(_objectSpread({}, heatmapEntryData), {}, {
201
+ source: heatmapEntryData.source || null
202
+ });
203
+ if (previousEntry !== null) {
204
+ cell.previousEntries.push(previousEntry);
205
+ }
206
+ case 25:
207
+ col++;
208
+ _context.next = 15;
209
+ break;
210
+ case 28:
211
+ row++;
212
+ _context.next = 13;
213
+ break;
214
+ case 31:
215
+ if (!(i % 100 === 0)) {
216
+ _context.next = 34;
217
+ break;
218
+ }
219
+ _context.next = 34;
220
+ return taskYield();
221
+ case 34:
222
+ i++;
223
+ _context.next = 1;
224
+ break;
225
+ case 37:
226
+ case "end":
227
+ return _context.stop();
228
+ }
229
+ }, _callee, this);
230
+ }));
231
+ function applyEntriesToHeatmap(_x) {
232
+ return _applyEntriesToHeatmap.apply(this, arguments);
233
+ }
234
+ return applyEntriesToHeatmap;
235
+ }()
236
+ }, {
237
+ key: "getVCPercentMetrics",
238
+ value: function () {
239
+ var _getVCPercentMetrics = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(vcPercentCheckpoint) {
240
+ var sortedCheckpoints, flattenHeatmap, totalCells, timestampMap, i, _cellHead$time, _timestampMap$get, cell, cellHead, timestamp, elementName, curr, sortedTimings, totalCellPainted, result, domElementsBuffer, _i, _timestamp, timestampInfo, cellCount, domElements, currVCRatio, currVCPercent, matchesAnyCheckpoints, checkpoint, _domElements;
241
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
242
+ while (1) switch (_context2.prev = _context2.next) {
243
+ case 0:
244
+ sortedCheckpoints = _toConsumableArray(vcPercentCheckpoint).sort(function (a, b) {
245
+ return a - b;
246
+ });
247
+ flattenHeatmap = this.map.flat();
248
+ totalCells = flattenHeatmap.length;
249
+ timestampMap = new Map();
250
+ i = 0;
251
+ case 5:
252
+ if (!(i < flattenHeatmap.length)) {
253
+ _context2.next = 20;
254
+ break;
255
+ }
256
+ cell = flattenHeatmap[i];
257
+ cellHead = cell.head;
258
+ timestamp = Math.trunc((_cellHead$time = cellHead === null || cellHead === void 0 ? void 0 : cellHead.time) !== null && _cellHead$time !== void 0 ? _cellHead$time : 0);
259
+ elementName = cellHead === null || cellHead === void 0 ? void 0 : cellHead.elementName;
260
+ curr = (_timestampMap$get = timestampMap.get(timestamp)) !== null && _timestampMap$get !== void 0 ? _timestampMap$get : {
261
+ cellCount: 0,
262
+ domElements: new Set()
263
+ };
264
+ curr.cellCount += 1;
265
+ if (elementName) {
266
+ curr.domElements.add(elementName);
267
+ }
268
+ timestampMap.set(timestamp, curr);
269
+
270
+ // Every 10000 heatmap entries processed
271
+ // we give the browser the power
272
+ // to process any other high priority task
273
+ if (!(i > 10000 && i % 10000 === 0)) {
274
+ _context2.next = 17;
275
+ break;
276
+ }
277
+ _context2.next = 17;
278
+ return taskYield();
279
+ case 17:
280
+ i++;
281
+ _context2.next = 5;
282
+ break;
283
+ case 20:
284
+ sortedTimings = _toConsumableArray(timestampMap.keys()).sort(function (a, b) {
285
+ return a - b;
286
+ });
287
+ totalCellPainted = 0;
288
+ result = {};
289
+ domElementsBuffer = new Set();
290
+ _i = 0;
291
+ case 25:
292
+ if (!(_i < sortedTimings.length)) {
293
+ _context2.next = 52;
294
+ break;
295
+ }
296
+ _timestamp = sortedTimings[_i];
297
+ timestampInfo = timestampMap.get(_timestamp);
298
+ if (timestampInfo) {
299
+ _context2.next = 30;
300
+ break;
301
+ }
302
+ throw new Error('unexpected timestampInfo not found');
303
+ case 30:
304
+ cellCount = timestampInfo.cellCount, domElements = timestampInfo.domElements;
305
+ totalCellPainted += cellCount;
306
+ currVCRatio = totalCellPainted / totalCells;
307
+ currVCPercent = Math.round(currVCRatio * 100);
308
+ domElements.forEach(function (domElement) {
309
+ domElementsBuffer.add(domElement);
310
+ });
311
+ matchesAnyCheckpoints = false;
312
+ case 36:
313
+ if (!(sortedCheckpoints.length > 0 && currVCPercent >= sortedCheckpoints[0])) {
314
+ _context2.next = 45;
315
+ break;
316
+ }
317
+ checkpoint = sortedCheckpoints.shift();
318
+ _domElements = _toConsumableArray(domElementsBuffer);
319
+ if (checkpoint) {
320
+ _context2.next = 41;
321
+ break;
322
+ }
323
+ return _context2.abrupt("break", 45);
324
+ case 41:
325
+ matchesAnyCheckpoints = true;
326
+ result[checkpoint.toString()] = {
327
+ t: _timestamp,
328
+ e: _domElements
329
+ };
330
+ _context2.next = 36;
331
+ break;
332
+ case 45:
333
+ if (matchesAnyCheckpoints) {
334
+ domElementsBuffer.clear();
335
+ }
336
+ if (!(_i % 500 === 0)) {
337
+ _context2.next = 49;
338
+ break;
339
+ }
340
+ _context2.next = 49;
341
+ return taskYield();
342
+ case 49:
343
+ _i++;
344
+ _context2.next = 25;
345
+ break;
346
+ case 52:
347
+ return _context2.abrupt("return", result);
348
+ case 53:
349
+ case "end":
350
+ return _context2.stop();
351
+ }
352
+ }, _callee2, this);
353
+ }));
354
+ function getVCPercentMetrics(_x2) {
355
+ return _getVCPercentMetrics.apply(this, arguments);
356
+ }
357
+ return getVCPercentMetrics;
358
+ }()
359
+ }]);
360
+ }();
361
+ export { Heatmap as default };