@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
@@ -41,6 +41,8 @@ exports.removeSegment = removeSegment;
41
41
  exports.sinkPostInteractionLogHandler = exports.sinkInteractionHandler = void 0;
42
42
  exports.tryComplete = tryComplete;
43
43
  exports.updatePageLoadInteractionName = updatePageLoadInteractionName;
44
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
45
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
44
46
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
45
47
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
46
48
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
@@ -579,29 +581,65 @@ function tryComplete(interactionId, endTime) {
579
581
  if (interaction != null) {
580
582
  var noMoreActiveHolds = interaction.holdActive.size === 0;
581
583
  var noMoreExpHolds = interaction.holdExpActive.size === 0;
582
- var postInteraction = function postInteraction() {
583
- var _getConfig6, _getConfig8;
584
- if ((_getConfig6 = (0, _config.getConfig)()) !== null && _getConfig6 !== void 0 && (_getConfig6 = _getConfig6.postInteractionLog) !== null && _getConfig6 !== void 0 && _getConfig6.enabled) {
585
- var _getConfig7;
586
- var experimentalVC90;
587
- var experimentalTTAI;
588
- if ((_getConfig7 = (0, _config.getConfig)()) !== null && _getConfig7 !== void 0 && (_getConfig7 = _getConfig7.experimentalInteractionMetrics) !== null && _getConfig7 !== void 0 && _getConfig7.enabled) {
589
- var _getExperimentalVCMet;
590
- experimentalVC90 = (_getExperimentalVCMet = (0, _createExperimentalInteractionMetricsPayload.getExperimentalVCMetrics)(interaction)) === null || _getExperimentalVCMet === void 0 ? void 0 : _getExperimentalVCMet['metric:experimental:vc90'];
591
- var start = interaction.start,
592
- end = interaction.end;
593
- experimentalTTAI = !interaction.abortReason ? Math.round(end - start) : undefined;
594
- }
595
- postInteractionLog.onInteractionComplete(_objectSpread(_objectSpread({}, interaction), {}, {
596
- experimentalTTAI: experimentalTTAI,
597
- experimentalVC90: experimentalVC90
598
- }));
599
- }
600
- if ((_getConfig8 = (0, _config.getConfig)()) !== null && _getConfig8 !== void 0 && (_getConfig8 = _getConfig8.experimentalInteractionMetrics) !== null && _getConfig8 !== void 0 && _getConfig8.enabled) {
601
- remove(interactionId);
602
- }
603
- activeSubmitted = false;
604
- };
584
+ var postInteraction = /*#__PURE__*/function () {
585
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
586
+ var _getConfig6, _getConfig8;
587
+ var _getConfig7, experimentalVC90, experimentalTTAI, _yield$getExperimenta, start, end;
588
+ return _regenerator.default.wrap(function _callee$(_context) {
589
+ while (1) switch (_context.prev = _context.next) {
590
+ case 0:
591
+ if (!((_getConfig6 = (0, _config.getConfig)()) !== null && _getConfig6 !== void 0 && (_getConfig6 = _getConfig6.postInteractionLog) !== null && _getConfig6 !== void 0 && _getConfig6.enabled)) {
592
+ _context.next = 17;
593
+ break;
594
+ }
595
+ if (!((_getConfig7 = (0, _config.getConfig)()) !== null && _getConfig7 !== void 0 && (_getConfig7 = _getConfig7.experimentalInteractionMetrics) !== null && _getConfig7 !== void 0 && _getConfig7.enabled)) {
596
+ _context.next = 16;
597
+ break;
598
+ }
599
+ _context.next = 4;
600
+ return (0, _createExperimentalInteractionMetricsPayload.getExperimentalVCMetrics)(interaction);
601
+ case 4:
602
+ _context.t1 = _yield$getExperimenta = _context.sent;
603
+ _context.t0 = _context.t1 === null;
604
+ if (_context.t0) {
605
+ _context.next = 8;
606
+ break;
607
+ }
608
+ _context.t0 = _yield$getExperimenta === void 0;
609
+ case 8:
610
+ if (!_context.t0) {
611
+ _context.next = 12;
612
+ break;
613
+ }
614
+ _context.t2 = void 0;
615
+ _context.next = 13;
616
+ break;
617
+ case 12:
618
+ _context.t2 = _yield$getExperimenta['metric:experimental:vc90'];
619
+ case 13:
620
+ experimentalVC90 = _context.t2;
621
+ start = interaction.start, end = interaction.end;
622
+ experimentalTTAI = !interaction.abortReason ? Math.round(end - start) : undefined;
623
+ case 16:
624
+ postInteractionLog.onInteractionComplete(_objectSpread(_objectSpread({}, interaction), {}, {
625
+ experimentalTTAI: experimentalTTAI,
626
+ experimentalVC90: experimentalVC90
627
+ }));
628
+ case 17:
629
+ if ((_getConfig8 = (0, _config.getConfig)()) !== null && _getConfig8 !== void 0 && (_getConfig8 = _getConfig8.experimentalInteractionMetrics) !== null && _getConfig8 !== void 0 && _getConfig8.enabled) {
630
+ remove(interactionId);
631
+ }
632
+ activeSubmitted = false;
633
+ case 19:
634
+ case "end":
635
+ return _context.stop();
636
+ }
637
+ }, _callee);
638
+ }));
639
+ return function postInteraction() {
640
+ return _ref.apply(this, arguments);
641
+ };
642
+ }();
605
643
  if (noMoreActiveHolds) {
606
644
  if (!activeSubmitted) {
607
645
  finishInteraction(interactionId, interaction, endTime);
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -112,43 +114,61 @@ var PostInteractionLog = exports.default = /*#__PURE__*/function () {
112
114
  */
113
115
  }, {
114
116
  key: "sendPostInteractionLog",
115
- value: function sendPostInteractionLog() {
116
- var _this$vcObserver3, _getConfig2;
117
- if (!this.hasData() || !this.lastInteractionFinish || !this.sinkHandlerFn) {
118
- var _getConfig;
119
- this.reset();
120
- if ((_getConfig = (0, _config.getConfig)()) !== null && _getConfig !== void 0 && (_getConfig = _getConfig.experimentalInteractionMetrics) !== null && _getConfig !== void 0 && _getConfig.enabled) {
121
- var _this$vcObserver2;
122
- (_this$vcObserver2 = this.vcObserver) === null || _this$vcObserver2 === void 0 || _this$vcObserver2.stop();
123
- }
124
- return;
117
+ value: (function () {
118
+ var _sendPostInteractionLog = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
119
+ var _this$vcObserver3, _getConfig2;
120
+ var _getConfig, _this$vcObserver2, postInteractionFinishVCResult, _this$vcObserver4;
121
+ return _regenerator.default.wrap(function _callee$(_context) {
122
+ while (1) switch (_context.prev = _context.next) {
123
+ case 0:
124
+ if (!(!this.hasData() || !this.lastInteractionFinish || !this.sinkHandlerFn)) {
125
+ _context.next = 4;
126
+ break;
127
+ }
128
+ this.reset();
129
+ if ((_getConfig = (0, _config.getConfig)()) !== null && _getConfig !== void 0 && (_getConfig = _getConfig.experimentalInteractionMetrics) !== null && _getConfig !== void 0 && _getConfig.enabled) {
130
+ (_this$vcObserver2 = this.vcObserver) === null || _this$vcObserver2 === void 0 || _this$vcObserver2.stop();
131
+ }
132
+ return _context.abrupt("return");
133
+ case 4:
134
+ _context.next = 6;
135
+ return (_this$vcObserver3 = this.vcObserver) === null || _this$vcObserver3 === void 0 ? void 0 : _this$vcObserver3.getVCResult(_objectSpread({
136
+ start: this.lastInteractionFinish.start,
137
+ stop: performance.now(),
138
+ tti: -1,
139
+ // no need for TTI value here
140
+ prefix: 'ufo'
141
+ }, this.vcObserverSSRConfig));
142
+ case 6:
143
+ postInteractionFinishVCResult = _context.sent;
144
+ if ((_getConfig2 = (0, _config.getConfig)()) !== null && _getConfig2 !== void 0 && (_getConfig2 = _getConfig2.experimentalInteractionMetrics) !== null && _getConfig2 !== void 0 && _getConfig2.enabled) {
145
+ (_this$vcObserver4 = this.vcObserver) === null || _this$vcObserver4 === void 0 || _this$vcObserver4.stop();
146
+ }
147
+ this.sinkHandlerFn({
148
+ lastInteractionFinish: this.lastInteractionFinish,
149
+ reactProfilerTimings: this.reactProfilerTimings,
150
+ // NOTE: invoking `getVCResult` at latest possible point in time here (not earlier) to get the most accurate result (from performance.now())
151
+ postInteractionFinishVCResult: postInteractionFinishVCResult,
152
+ lastInteractionFinishVCResult: this.lastInteractionFinishVCResult
153
+ });
154
+ this.reset();
155
+ case 10:
156
+ case "end":
157
+ return _context.stop();
158
+ }
159
+ }, _callee, this);
160
+ }));
161
+ function sendPostInteractionLog() {
162
+ return _sendPostInteractionLog.apply(this, arguments);
125
163
  }
126
- var postInteractionFinishVCResult = (_this$vcObserver3 = this.vcObserver) === null || _this$vcObserver3 === void 0 ? void 0 : _this$vcObserver3.getVCResult(_objectSpread({
127
- start: this.lastInteractionFinish.start,
128
- stop: performance.now(),
129
- tti: -1,
130
- // no need for TTI value here
131
- prefix: 'ufo'
132
- }, this.vcObserverSSRConfig));
133
- if ((_getConfig2 = (0, _config.getConfig)()) !== null && _getConfig2 !== void 0 && (_getConfig2 = _getConfig2.experimentalInteractionMetrics) !== null && _getConfig2 !== void 0 && _getConfig2.enabled) {
134
- var _this$vcObserver4;
135
- (_this$vcObserver4 = this.vcObserver) === null || _this$vcObserver4 === void 0 || _this$vcObserver4.stop();
136
- }
137
- this.sinkHandlerFn({
138
- lastInteractionFinish: this.lastInteractionFinish,
139
- reactProfilerTimings: this.reactProfilerTimings,
140
- // NOTE: invoking `getVCResult` at latest possible point in time here (not earlier) to get the most accurate result (from performance.now())
141
- postInteractionFinishVCResult: postInteractionFinishVCResult,
142
- lastInteractionFinishVCResult: this.lastInteractionFinishVCResult
143
- });
144
- this.reset();
145
- }
146
-
164
+ return sendPostInteractionLog;
165
+ }()
147
166
  /**
148
167
  * This fn should be invoked when an interaction has finished
149
168
  * Basic details about the finished interaction will be recorded
150
169
  * A timeout will be setup to send the post interaction observation after some time.
151
170
  */
171
+ )
152
172
  }, {
153
173
  key: "onInteractionComplete",
154
174
  value: function onInteractionComplete(_ref2) {
@@ -177,9 +197,18 @@ var PostInteractionLog = exports.default = /*#__PURE__*/function () {
177
197
  experimentalVC90: experimentalVC90
178
198
  };
179
199
  var timeout = ((_getConfig3 = (0, _config.getConfig)()) === null || _getConfig3 === void 0 ? void 0 : _getConfig3.timeWindowForLateMutationsInMilliseconds) || POST_INTERACTION_LOG_SEND_DEFAULT_TIMEOUT;
180
- this.sinkTimeoutId = window.setTimeout(function () {
181
- _this.sendPostInteractionLog();
182
- }, timeout);
200
+ this.sinkTimeoutId = window.setTimeout( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
201
+ return _regenerator.default.wrap(function _callee2$(_context2) {
202
+ while (1) switch (_context2.prev = _context2.next) {
203
+ case 0:
204
+ _context2.next = 2;
205
+ return _this.sendPostInteractionLog();
206
+ case 2:
207
+ case "end":
208
+ return _context2.stop();
209
+ }
210
+ }, _callee2);
211
+ })), timeout);
183
212
  }
184
213
 
185
214
  /**
@@ -8,6 +8,7 @@ exports.init = void 0;
8
8
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
10
  var _scheduler = require("scheduler");
11
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
11
12
  var _additionalPayload = require("../additional-payload");
12
13
  var _config = require("../config");
13
14
  var _createExperimentalInteractionMetricsPayload = require("../create-experimental-interaction-metrics-payload");
@@ -20,13 +21,17 @@ var initialized = false;
20
21
  function sinkInteraction(instance, payloadPackage) {
21
22
  (0, _interactionMetrics.sinkInteractionHandler)(function (interactionId, interaction) {
22
23
  (0, _scheduler.unstable_scheduleCallback)(_scheduler.unstable_IdlePriority, function () {
23
- var payloads = payloadPackage.createPayloads(interactionId, interaction);
24
- var devToolObserver = globalThis.__ufo_devtool_onUfoPayload;
25
- payloads === null || payloads === void 0 || payloads.forEach(function (payload) {
26
- if (typeof devToolObserver === 'function') {
27
- devToolObserver === null || devToolObserver === void 0 || devToolObserver(payload);
28
- }
29
- instance.sendOperationalEvent(payload);
24
+ payloadPackage.createPayloads(interactionId, interaction).then(function (payloads) {
25
+ // NOTE: This API is used by the UFO DevTool Chrome Extension and Criterion
26
+ var devToolObserver = globalThis.__ufo_devtool_onUfoPayload;
27
+ payloads === null || payloads === void 0 || payloads.forEach(function (payload) {
28
+ if (typeof devToolObserver === 'function') {
29
+ devToolObserver === null || devToolObserver === void 0 || devToolObserver(payload);
30
+ }
31
+ instance.sendOperationalEvent(payload);
32
+ });
33
+ }).catch(function (error) {
34
+ throw error;
30
35
  });
31
36
  });
32
37
  });
@@ -36,6 +41,13 @@ function sinkExperimentalInteractionMetrics(instance, payloadPackage) {
36
41
  (0, _scheduler.unstable_scheduleCallback)(_scheduler.unstable_IdlePriority, function () {
37
42
  var payload = payloadPackage.createExperimentalMetricsPayload(interactionId, interaction);
38
43
  if (payload) {
44
+ if ((0, _platformFeatureFlags.fg)('enable_ufo_devtools_api_for_extra_events')) {
45
+ // NOTE: This API is used by the UFO DevTool Chrome Extension and Criterion
46
+ var devToolObserver = globalThis.__ufo_devtool_onUfoPayload;
47
+ if (typeof devToolObserver === 'function') {
48
+ devToolObserver === null || devToolObserver === void 0 || devToolObserver(payload);
49
+ }
50
+ }
39
51
  instance.sendOperationalEvent(payload);
40
52
  }
41
53
  });
@@ -46,6 +58,13 @@ function sinkPostInteractionLog(instance, createPostInteractionLogPayload) {
46
58
  (0, _scheduler.unstable_scheduleCallback)(_scheduler.unstable_IdlePriority, function () {
47
59
  var payload = createPostInteractionLogPayload(logOutput);
48
60
  if (payload) {
61
+ // NOTE: This API is used by the UFO DevTool Chrome Extension and also by Criterion
62
+ if ((0, _platformFeatureFlags.fg)('enable_ufo_devtools_api_for_extra_events')) {
63
+ var devToolObserver = globalThis.__ufo_devtool_onUfoPayload;
64
+ if (typeof devToolObserver === 'function') {
65
+ devToolObserver === null || devToolObserver === void 0 || devToolObserver(payload);
66
+ }
67
+ }
49
68
  instance.sendOperationalEvent(payload);
50
69
  }
51
70
  });
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = scheduleOnPaint;
7
+ function scheduleOnPaint(callback) {
8
+ var _document;
9
+ if (((_document = document) === null || _document === void 0 ? void 0 : _document.visibilityState) !== 'visible') {
10
+ // last resort fallback
11
+ setTimeout(callback, 100);
12
+ return;
13
+ }
14
+
15
+ // Check if the Scheduler API is available
16
+ if (typeof window.scheduler !== 'undefined' && typeof window.scheduler.postTask === 'function') {
17
+ // Use scheduler.postTask if available
18
+ // https://developer.mozilla.org/en-US/docs/Web/API/Prioritized_Task_Scheduling_API
19
+ // Make sure we are scheduling this task before the browser paint the next frame
20
+ requestAnimationFrame(function () {
21
+ window.scheduler.postTask(callback, {
22
+ priority: 'user-visible'
23
+ });
24
+ });
25
+ }
26
+ // if active tab, and can do requestAnimationFrame
27
+ else if (typeof requestAnimationFrame !== 'undefined') {
28
+ // Fallback to using double requestAnimationFrame
29
+ requestAnimationFrame(function () {
30
+ requestAnimationFrame(function () {
31
+ callback();
32
+ });
33
+ });
34
+ }
35
+ }
@@ -20,6 +20,7 @@ var _interactionIdContext = _interopRequireDefault(require("../interaction-id-co
20
20
  var _interactionMetrics = require("../interaction-metrics");
21
21
  var _routeNameContext = _interopRequireDefault(require("../route-name-context"));
22
22
  var _shortId = _interopRequireDefault(require("../short-id"));
23
+ var _scheduleOnPaint = _interopRequireDefault(require("./schedule-on-paint"));
23
24
  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; }
24
25
  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) { (0, _defineProperty2.default)(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; }
25
26
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
@@ -214,9 +215,17 @@ function UFOSegment(_ref) {
214
215
  }
215
216
  },
216
217
  onRender: function onRender(phase, actualDuration, baseDuration, startTime, commitTime) {
218
+ var _this = this;
217
219
  if (interactionId.current !== null) {
218
220
  (0, _interactionMetrics.addProfilerTimings)(interactionId.current, this.labelStack, phase, actualDuration, baseDuration, startTime, commitTime);
219
- this.complete(commitTime);
221
+ if ((0, _platformFeatureFlags.fg)('platform_ufo_vc_ttai_on_paint')) {
222
+ (0, _scheduleOnPaint.default)(function () {
223
+ var paintedTime = performance.now();
224
+ _this.complete(paintedTime);
225
+ });
226
+ } else {
227
+ this.complete(commitTime);
228
+ }
220
229
  }
221
230
  },
222
231
  _internalHold: _internalHold,
@@ -1,14 +1,118 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.getVCObserver = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
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 _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
7
15
  var _vcObserver = require("./vc-observer");
16
+ var _vcObserverNew = _interopRequireDefault(require("./vc-observer-new"));
17
+ 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; }
18
+ 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) { (0, _defineProperty2.default)(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; }
19
+ var VCObserverWrapper = /*#__PURE__*/function () {
20
+ function VCObserverWrapper() {
21
+ var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
22
+ (0, _classCallCheck2.default)(this, VCObserverWrapper);
23
+ this.oldVCObserver = new _vcObserver.VCObserver(opts);
24
+ this.newVCObserver = null;
25
+ var isNewVCObserverEnabled = (0, _platformFeatureFlags.fg)('platform_ufo_vc_observer_new');
26
+ if (isNewVCObserverEnabled) {
27
+ this.newVCObserver = new _vcObserverNew.default({
28
+ selectorConfig: opts.selectorConfig
29
+ });
30
+ }
31
+ }
32
+ return (0, _createClass2.default)(VCObserverWrapper, [{
33
+ key: "start",
34
+ value: function start(startArg) {
35
+ var _this$oldVCObserver, _this$newVCObserver;
36
+ (_this$oldVCObserver = this.oldVCObserver) === null || _this$oldVCObserver === void 0 || _this$oldVCObserver.start(startArg);
37
+ (_this$newVCObserver = this.newVCObserver) === null || _this$newVCObserver === void 0 || _this$newVCObserver.start();
38
+ }
39
+ }, {
40
+ key: "stop",
41
+ value: function stop() {
42
+ var _this$oldVCObserver2, _this$newVCObserver2;
43
+ (_this$oldVCObserver2 = this.oldVCObserver) === null || _this$oldVCObserver2 === void 0 || _this$oldVCObserver2.stop();
44
+ (_this$newVCObserver2 = this.newVCObserver) === null || _this$newVCObserver2 === void 0 || _this$newVCObserver2.stop();
45
+ }
46
+ }, {
47
+ key: "getVCRawData",
48
+ value: function getVCRawData() {
49
+ var _this$oldVCObserver$g, _this$oldVCObserver3;
50
+ return (_this$oldVCObserver$g = (_this$oldVCObserver3 = this.oldVCObserver) === null || _this$oldVCObserver3 === void 0 ? void 0 : _this$oldVCObserver3.getVCRawData()) !== null && _this$oldVCObserver$g !== void 0 ? _this$oldVCObserver$g : null;
51
+ }
52
+ }, {
53
+ key: "getVCResult",
54
+ value: function () {
55
+ var _getVCResult = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(param) {
56
+ var _this$oldVCObserver4, _this$newVCObserver3, _ref;
57
+ var oldResult, newResult;
58
+ return _regenerator.default.wrap(function _callee$(_context) {
59
+ while (1) switch (_context.prev = _context.next) {
60
+ case 0:
61
+ _context.next = 2;
62
+ return (_this$oldVCObserver4 = this.oldVCObserver) === null || _this$oldVCObserver4 === void 0 ? void 0 : _this$oldVCObserver4.getVCResult(param);
63
+ case 2:
64
+ oldResult = _context.sent;
65
+ _context.next = 5;
66
+ return (_this$newVCObserver3 = this.newVCObserver) === null || _this$newVCObserver3 === void 0 ? void 0 : _this$newVCObserver3.getVCResult({
67
+ start: param.start,
68
+ stop: (0, _platformFeatureFlags.fg)('platform_ufo_vc_ttai_on_paint') ? param.stop : performance.now()
69
+ });
70
+ case 5:
71
+ newResult = _context.sent;
72
+ if (!(oldResult && !newResult)) {
73
+ _context.next = 8;
74
+ break;
75
+ }
76
+ return _context.abrupt("return", oldResult);
77
+ case 8:
78
+ return _context.abrupt("return", _objectSpread(_objectSpread({}, oldResult !== null && oldResult !== void 0 ? oldResult : {}), {}, {
79
+ 'ufo:vc:rev': [].concat((0, _toConsumableArray2.default)((_ref = oldResult === null || oldResult === void 0 ? void 0 : oldResult['ufo:vc:rev']) !== null && _ref !== void 0 ? _ref : []), (0, _toConsumableArray2.default)(newResult !== null && newResult !== void 0 ? newResult : []))
80
+ }));
81
+ case 9:
82
+ case "end":
83
+ return _context.stop();
84
+ }
85
+ }, _callee, this);
86
+ }));
87
+ function getVCResult(_x) {
88
+ return _getVCResult.apply(this, arguments);
89
+ }
90
+ return getVCResult;
91
+ }()
92
+ }, {
93
+ key: "setSSRElement",
94
+ value: function setSSRElement(element) {
95
+ var _this$oldVCObserver5;
96
+ (_this$oldVCObserver5 = this.oldVCObserver) === null || _this$oldVCObserver5 === void 0 || _this$oldVCObserver5.setSSRElement(element);
97
+ }
98
+ }, {
99
+ key: "setReactRootRenderStart",
100
+ value: function setReactRootRenderStart(startTime) {
101
+ var _this$oldVCObserver6;
102
+ (_this$oldVCObserver6 = this.oldVCObserver) === null || _this$oldVCObserver6 === void 0 || _this$oldVCObserver6.setReactRootRenderStart(startTime || performance.now());
103
+ }
104
+ }, {
105
+ key: "setReactRootRenderStop",
106
+ value: function setReactRootRenderStop(stopTime) {
107
+ var _this$oldVCObserver7;
108
+ (_this$oldVCObserver7 = this.oldVCObserver) === null || _this$oldVCObserver7 === void 0 || _this$oldVCObserver7.setReactRootRenderStop(stopTime || performance.now());
109
+ }
110
+ }]);
111
+ }();
8
112
  var getVCObserver = exports.getVCObserver = function getVCObserver() {
9
113
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
10
114
  if (!globalThis.__vcObserver) {
11
- globalThis.__vcObserver = new _vcObserver.VCObserver(opts);
115
+ globalThis.__vcObserver = new VCObserverWrapper(opts);
12
116
  }
13
117
  return globalThis.__vcObserver;
14
118
  };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });