@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
@@ -1,6 +1,8 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
1
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
3
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
4
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
5
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
4
6
  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; }
5
7
  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; }
6
8
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
@@ -536,29 +538,65 @@ export function tryComplete(interactionId, endTime) {
536
538
  if (interaction != null) {
537
539
  var noMoreActiveHolds = interaction.holdActive.size === 0;
538
540
  var noMoreExpHolds = interaction.holdExpActive.size === 0;
539
- var postInteraction = function postInteraction() {
540
- var _getConfig6, _getConfig8;
541
- if ((_getConfig6 = getConfig()) !== null && _getConfig6 !== void 0 && (_getConfig6 = _getConfig6.postInteractionLog) !== null && _getConfig6 !== void 0 && _getConfig6.enabled) {
542
- var _getConfig7;
543
- var experimentalVC90;
544
- var experimentalTTAI;
545
- if ((_getConfig7 = getConfig()) !== null && _getConfig7 !== void 0 && (_getConfig7 = _getConfig7.experimentalInteractionMetrics) !== null && _getConfig7 !== void 0 && _getConfig7.enabled) {
546
- var _getExperimentalVCMet;
547
- experimentalVC90 = (_getExperimentalVCMet = getExperimentalVCMetrics(interaction)) === null || _getExperimentalVCMet === void 0 ? void 0 : _getExperimentalVCMet['metric:experimental:vc90'];
548
- var start = interaction.start,
549
- end = interaction.end;
550
- experimentalTTAI = !interaction.abortReason ? Math.round(end - start) : undefined;
551
- }
552
- postInteractionLog.onInteractionComplete(_objectSpread(_objectSpread({}, interaction), {}, {
553
- experimentalTTAI: experimentalTTAI,
554
- experimentalVC90: experimentalVC90
555
- }));
556
- }
557
- if ((_getConfig8 = getConfig()) !== null && _getConfig8 !== void 0 && (_getConfig8 = _getConfig8.experimentalInteractionMetrics) !== null && _getConfig8 !== void 0 && _getConfig8.enabled) {
558
- remove(interactionId);
559
- }
560
- activeSubmitted = false;
561
- };
541
+ var postInteraction = /*#__PURE__*/function () {
542
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
543
+ var _getConfig6, _getConfig8;
544
+ var _getConfig7, experimentalVC90, experimentalTTAI, _yield$getExperimenta, start, end;
545
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
546
+ while (1) switch (_context.prev = _context.next) {
547
+ case 0:
548
+ if (!((_getConfig6 = getConfig()) !== null && _getConfig6 !== void 0 && (_getConfig6 = _getConfig6.postInteractionLog) !== null && _getConfig6 !== void 0 && _getConfig6.enabled)) {
549
+ _context.next = 17;
550
+ break;
551
+ }
552
+ if (!((_getConfig7 = getConfig()) !== null && _getConfig7 !== void 0 && (_getConfig7 = _getConfig7.experimentalInteractionMetrics) !== null && _getConfig7 !== void 0 && _getConfig7.enabled)) {
553
+ _context.next = 16;
554
+ break;
555
+ }
556
+ _context.next = 4;
557
+ return getExperimentalVCMetrics(interaction);
558
+ case 4:
559
+ _context.t1 = _yield$getExperimenta = _context.sent;
560
+ _context.t0 = _context.t1 === null;
561
+ if (_context.t0) {
562
+ _context.next = 8;
563
+ break;
564
+ }
565
+ _context.t0 = _yield$getExperimenta === void 0;
566
+ case 8:
567
+ if (!_context.t0) {
568
+ _context.next = 12;
569
+ break;
570
+ }
571
+ _context.t2 = void 0;
572
+ _context.next = 13;
573
+ break;
574
+ case 12:
575
+ _context.t2 = _yield$getExperimenta['metric:experimental:vc90'];
576
+ case 13:
577
+ experimentalVC90 = _context.t2;
578
+ start = interaction.start, end = interaction.end;
579
+ experimentalTTAI = !interaction.abortReason ? Math.round(end - start) : undefined;
580
+ case 16:
581
+ postInteractionLog.onInteractionComplete(_objectSpread(_objectSpread({}, interaction), {}, {
582
+ experimentalTTAI: experimentalTTAI,
583
+ experimentalVC90: experimentalVC90
584
+ }));
585
+ case 17:
586
+ if ((_getConfig8 = getConfig()) !== null && _getConfig8 !== void 0 && (_getConfig8 = _getConfig8.experimentalInteractionMetrics) !== null && _getConfig8 !== void 0 && _getConfig8.enabled) {
587
+ remove(interactionId);
588
+ }
589
+ activeSubmitted = false;
590
+ case 19:
591
+ case "end":
592
+ return _context.stop();
593
+ }
594
+ }, _callee);
595
+ }));
596
+ return function postInteraction() {
597
+ return _ref.apply(this, arguments);
598
+ };
599
+ }();
562
600
  if (noMoreActiveHolds) {
563
601
  if (!activeSubmitted) {
564
602
  finishInteraction(interactionId, interaction, endTime);
@@ -1,6 +1,8 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
1
2
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
3
  import _createClass from "@babel/runtime/helpers/createClass";
3
4
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
5
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
4
6
  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; }
5
7
  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; }
6
8
  import { getConfig } from '../config';
@@ -105,43 +107,61 @@ var PostInteractionLog = /*#__PURE__*/function () {
105
107
  */
106
108
  }, {
107
109
  key: "sendPostInteractionLog",
108
- value: function sendPostInteractionLog() {
109
- var _this$vcObserver3, _getConfig2;
110
- if (!this.hasData() || !this.lastInteractionFinish || !this.sinkHandlerFn) {
111
- var _getConfig;
112
- this.reset();
113
- if ((_getConfig = getConfig()) !== null && _getConfig !== void 0 && (_getConfig = _getConfig.experimentalInteractionMetrics) !== null && _getConfig !== void 0 && _getConfig.enabled) {
114
- var _this$vcObserver2;
115
- (_this$vcObserver2 = this.vcObserver) === null || _this$vcObserver2 === void 0 || _this$vcObserver2.stop();
116
- }
117
- return;
110
+ value: (function () {
111
+ var _sendPostInteractionLog = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
112
+ var _this$vcObserver3, _getConfig2;
113
+ var _getConfig, _this$vcObserver2, postInteractionFinishVCResult, _this$vcObserver4;
114
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
115
+ while (1) switch (_context.prev = _context.next) {
116
+ case 0:
117
+ if (!(!this.hasData() || !this.lastInteractionFinish || !this.sinkHandlerFn)) {
118
+ _context.next = 4;
119
+ break;
120
+ }
121
+ this.reset();
122
+ if ((_getConfig = getConfig()) !== null && _getConfig !== void 0 && (_getConfig = _getConfig.experimentalInteractionMetrics) !== null && _getConfig !== void 0 && _getConfig.enabled) {
123
+ (_this$vcObserver2 = this.vcObserver) === null || _this$vcObserver2 === void 0 || _this$vcObserver2.stop();
124
+ }
125
+ return _context.abrupt("return");
126
+ case 4:
127
+ _context.next = 6;
128
+ return (_this$vcObserver3 = this.vcObserver) === null || _this$vcObserver3 === void 0 ? void 0 : _this$vcObserver3.getVCResult(_objectSpread({
129
+ start: this.lastInteractionFinish.start,
130
+ stop: performance.now(),
131
+ tti: -1,
132
+ // no need for TTI value here
133
+ prefix: 'ufo'
134
+ }, this.vcObserverSSRConfig));
135
+ case 6:
136
+ postInteractionFinishVCResult = _context.sent;
137
+ if ((_getConfig2 = getConfig()) !== null && _getConfig2 !== void 0 && (_getConfig2 = _getConfig2.experimentalInteractionMetrics) !== null && _getConfig2 !== void 0 && _getConfig2.enabled) {
138
+ (_this$vcObserver4 = this.vcObserver) === null || _this$vcObserver4 === void 0 || _this$vcObserver4.stop();
139
+ }
140
+ this.sinkHandlerFn({
141
+ lastInteractionFinish: this.lastInteractionFinish,
142
+ reactProfilerTimings: this.reactProfilerTimings,
143
+ // NOTE: invoking `getVCResult` at latest possible point in time here (not earlier) to get the most accurate result (from performance.now())
144
+ postInteractionFinishVCResult: postInteractionFinishVCResult,
145
+ lastInteractionFinishVCResult: this.lastInteractionFinishVCResult
146
+ });
147
+ this.reset();
148
+ case 10:
149
+ case "end":
150
+ return _context.stop();
151
+ }
152
+ }, _callee, this);
153
+ }));
154
+ function sendPostInteractionLog() {
155
+ return _sendPostInteractionLog.apply(this, arguments);
118
156
  }
119
- var postInteractionFinishVCResult = (_this$vcObserver3 = this.vcObserver) === null || _this$vcObserver3 === void 0 ? void 0 : _this$vcObserver3.getVCResult(_objectSpread({
120
- start: this.lastInteractionFinish.start,
121
- stop: performance.now(),
122
- tti: -1,
123
- // no need for TTI value here
124
- prefix: 'ufo'
125
- }, this.vcObserverSSRConfig));
126
- if ((_getConfig2 = getConfig()) !== null && _getConfig2 !== void 0 && (_getConfig2 = _getConfig2.experimentalInteractionMetrics) !== null && _getConfig2 !== void 0 && _getConfig2.enabled) {
127
- var _this$vcObserver4;
128
- (_this$vcObserver4 = this.vcObserver) === null || _this$vcObserver4 === void 0 || _this$vcObserver4.stop();
129
- }
130
- this.sinkHandlerFn({
131
- lastInteractionFinish: this.lastInteractionFinish,
132
- reactProfilerTimings: this.reactProfilerTimings,
133
- // NOTE: invoking `getVCResult` at latest possible point in time here (not earlier) to get the most accurate result (from performance.now())
134
- postInteractionFinishVCResult: postInteractionFinishVCResult,
135
- lastInteractionFinishVCResult: this.lastInteractionFinishVCResult
136
- });
137
- this.reset();
138
- }
139
-
157
+ return sendPostInteractionLog;
158
+ }()
140
159
  /**
141
160
  * This fn should be invoked when an interaction has finished
142
161
  * Basic details about the finished interaction will be recorded
143
162
  * A timeout will be setup to send the post interaction observation after some time.
144
163
  */
164
+ )
145
165
  }, {
146
166
  key: "onInteractionComplete",
147
167
  value: function onInteractionComplete(_ref2) {
@@ -170,9 +190,18 @@ var PostInteractionLog = /*#__PURE__*/function () {
170
190
  experimentalVC90: experimentalVC90
171
191
  };
172
192
  var timeout = ((_getConfig3 = getConfig()) === null || _getConfig3 === void 0 ? void 0 : _getConfig3.timeWindowForLateMutationsInMilliseconds) || POST_INTERACTION_LOG_SEND_DEFAULT_TIMEOUT;
173
- this.sinkTimeoutId = window.setTimeout(function () {
174
- _this.sendPostInteractionLog();
175
- }, timeout);
193
+ this.sinkTimeoutId = window.setTimeout( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
194
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
195
+ while (1) switch (_context2.prev = _context2.next) {
196
+ case 0:
197
+ _context2.next = 2;
198
+ return _this.sendPostInteractionLog();
199
+ case 2:
200
+ case "end":
201
+ return _context2.stop();
202
+ }
203
+ }, _callee2);
204
+ })), timeout);
176
205
  }
177
206
 
178
207
  /**
@@ -10,13 +10,16 @@ var initialized = false;
10
10
  function sinkInteraction(instance, payloadPackage) {
11
11
  sinkInteractionHandler(function (interactionId, interaction) {
12
12
  scheduleCallback(idlePriority, function () {
13
- var payloads = payloadPackage.createPayloads(interactionId, interaction);
14
- var devToolObserver = globalThis.__ufo_devtool_onUfoPayload;
15
- payloads === null || payloads === void 0 || payloads.forEach(function (payload) {
16
- if (typeof devToolObserver === 'function') {
17
- devToolObserver === null || devToolObserver === void 0 || devToolObserver(payload);
18
- }
19
- instance.sendOperationalEvent(payload);
13
+ payloadPackage.createPayloads(interactionId, interaction).then(function (payloads) {
14
+ var devToolObserver = globalThis.__ufo_devtool_onUfoPayload;
15
+ payloads === null || payloads === void 0 || payloads.forEach(function (payload) {
16
+ if (typeof devToolObserver === 'function') {
17
+ devToolObserver === null || devToolObserver === void 0 || devToolObserver(payload);
18
+ }
19
+ instance.sendOperationalEvent(payload);
20
+ });
21
+ }).catch(function (error) {
22
+ throw error;
20
23
  });
21
24
  });
22
25
  });
@@ -6,13 +6,13 @@ import { getConfig as getConfigUFO } from '../config';
6
6
  import { roundEpsilon } from '../round-number';
7
7
  import { getConfig } from './common/utils/config';
8
8
  import { filterResourceTimings } from './common/utils/resource-timing-buffer';
9
- var cacheableTypes = ['script', 'link'];
9
+ var alwaysCacheableTypes = ['script', 'link'];
10
10
  var resourceTypes = ['fetch', 'xmlhttprequest'];
11
11
  var CACHE_NETWORK = 'network';
12
12
  var CACHE_MEMORY = 'memory';
13
13
  var CACHE_DISK = 'disk';
14
14
  var isCacheableType = function isCacheableType(url, type) {
15
- if (cacheableTypes.includes(type)) {
15
+ if (alwaysCacheableTypes.includes(type)) {
16
16
  return true;
17
17
  }
18
18
  if (type === 'other' && url.includes('.js') && fg('ufo_support_other_resource_type_js')) {
@@ -86,7 +86,7 @@ var getNetworkData = function getNetworkData(item, eventStart) {
86
86
  if (!hasAccessToResourceSize(name, initiatorType, item, hasTimingHeaders)) {
87
87
  return {};
88
88
  }
89
- if (cacheableTypes.includes(initiatorType)) {
89
+ if (isCacheableType(name, initiatorType)) {
90
90
  var transferType = calculateTransferType(name, initiatorType, duration, transferSize);
91
91
  return _objectSpread({
92
92
  ttfb: ttfb,
@@ -0,0 +1,29 @@
1
+ export default function scheduleOnPaint(callback) {
2
+ var _document;
3
+ if (((_document = document) === null || _document === void 0 ? void 0 : _document.visibilityState) !== 'visible') {
4
+ // last resort fallback
5
+ setTimeout(callback, 100);
6
+ return;
7
+ }
8
+
9
+ // Check if the Scheduler API is available
10
+ if (typeof window.scheduler !== 'undefined' && typeof window.scheduler.postTask === 'function') {
11
+ // Use scheduler.postTask if available
12
+ // https://developer.mozilla.org/en-US/docs/Web/API/Prioritized_Task_Scheduling_API
13
+ // Make sure we are scheduling this task before the browser paint the next frame
14
+ requestAnimationFrame(function () {
15
+ window.scheduler.postTask(callback, {
16
+ priority: 'user-visible'
17
+ });
18
+ });
19
+ }
20
+ // if active tab, and can do requestAnimationFrame
21
+ else if (typeof requestAnimationFrame !== 'undefined') {
22
+ // Fallback to using double requestAnimationFrame
23
+ requestAnimationFrame(function () {
24
+ requestAnimationFrame(function () {
25
+ callback();
26
+ });
27
+ });
28
+ }
29
+ }
@@ -14,6 +14,7 @@ import UFOInteractionIDContext from '../interaction-id-context';
14
14
  import { abortByNewInteraction, addApdex as _addApdex, addCustomData as _addCustomData, addCustomTiming, addHold, addHoldByID, addMark as _addMark, addNewInteraction, addProfilerTimings, addRequestInfo, addSegment, addSpan, removeHoldByID, removeSegment, tryComplete } from '../interaction-metrics';
15
15
  import UFORouteName from '../route-name-context';
16
16
  import generateId from '../short-id';
17
+ import scheduleOnPaint from './schedule-on-paint';
17
18
  var tryCompleteHandle;
18
19
  var AsyncSegmentHighlight = /*#__PURE__*/lazy(function () {
19
20
  return import( /* webpackChunkName: "@atlaskit-internal_ufo-segment-highlight" */'./segment-highlight').then(function (module) {
@@ -202,9 +203,17 @@ export default function UFOSegment(_ref) {
202
203
  }
203
204
  },
204
205
  onRender: function onRender(phase, actualDuration, baseDuration, startTime, commitTime) {
206
+ var _this = this;
205
207
  if (interactionId.current !== null) {
206
208
  addProfilerTimings(interactionId.current, this.labelStack, phase, actualDuration, baseDuration, startTime, commitTime);
207
- this.complete(commitTime);
209
+ if (fg('platform_ufo_vc_ttai_on_paint')) {
210
+ scheduleOnPaint(function () {
211
+ var paintedTime = performance.now();
212
+ _this.complete(paintedTime);
213
+ });
214
+ } else {
215
+ this.complete(commitTime);
216
+ }
208
217
  }
209
218
  },
210
219
  _internalHold: _internalHold,
@@ -1,8 +1,111 @@
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 { fg } from '@atlaskit/platform-feature-flags';
1
10
  import { VCObserver } from './vc-observer';
11
+ import VCObserverNew from './vc-observer-new';
12
+ var VCObserverWrapper = /*#__PURE__*/function () {
13
+ function VCObserverWrapper() {
14
+ var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
15
+ _classCallCheck(this, VCObserverWrapper);
16
+ this.oldVCObserver = new VCObserver(opts);
17
+ this.newVCObserver = null;
18
+ var isNewVCObserverEnabled = fg('platform_ufo_vc_observer_new');
19
+ if (isNewVCObserverEnabled) {
20
+ this.newVCObserver = new VCObserverNew({
21
+ selectorConfig: opts.selectorConfig
22
+ });
23
+ }
24
+ }
25
+ return _createClass(VCObserverWrapper, [{
26
+ key: "start",
27
+ value: function start(startArg) {
28
+ var _this$oldVCObserver, _this$newVCObserver;
29
+ (_this$oldVCObserver = this.oldVCObserver) === null || _this$oldVCObserver === void 0 || _this$oldVCObserver.start(startArg);
30
+ (_this$newVCObserver = this.newVCObserver) === null || _this$newVCObserver === void 0 || _this$newVCObserver.start();
31
+ }
32
+ }, {
33
+ key: "stop",
34
+ value: function stop() {
35
+ var _this$oldVCObserver2, _this$newVCObserver2;
36
+ (_this$oldVCObserver2 = this.oldVCObserver) === null || _this$oldVCObserver2 === void 0 || _this$oldVCObserver2.stop();
37
+ (_this$newVCObserver2 = this.newVCObserver) === null || _this$newVCObserver2 === void 0 || _this$newVCObserver2.stop();
38
+ }
39
+ }, {
40
+ key: "getVCRawData",
41
+ value: function getVCRawData() {
42
+ var _this$oldVCObserver$g, _this$oldVCObserver3;
43
+ 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;
44
+ }
45
+ }, {
46
+ key: "getVCResult",
47
+ value: function () {
48
+ var _getVCResult = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(param) {
49
+ var _this$oldVCObserver4, _this$newVCObserver3, _ref;
50
+ var oldResult, newResult;
51
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
52
+ while (1) switch (_context.prev = _context.next) {
53
+ case 0:
54
+ _context.next = 2;
55
+ return (_this$oldVCObserver4 = this.oldVCObserver) === null || _this$oldVCObserver4 === void 0 ? void 0 : _this$oldVCObserver4.getVCResult(param);
56
+ case 2:
57
+ oldResult = _context.sent;
58
+ _context.next = 5;
59
+ return (_this$newVCObserver3 = this.newVCObserver) === null || _this$newVCObserver3 === void 0 ? void 0 : _this$newVCObserver3.getVCResult({
60
+ start: param.start,
61
+ stop: fg('platform_ufo_vc_ttai_on_paint') ? param.stop : performance.now()
62
+ });
63
+ case 5:
64
+ newResult = _context.sent;
65
+ if (!(oldResult && !newResult)) {
66
+ _context.next = 8;
67
+ break;
68
+ }
69
+ return _context.abrupt("return", oldResult);
70
+ case 8:
71
+ return _context.abrupt("return", _objectSpread(_objectSpread({}, oldResult !== null && oldResult !== void 0 ? oldResult : {}), {}, {
72
+ 'ufo:vc:rev': [].concat(_toConsumableArray((_ref = oldResult === null || oldResult === void 0 ? void 0 : oldResult['ufo:vc:rev']) !== null && _ref !== void 0 ? _ref : []), _toConsumableArray(newResult !== null && newResult !== void 0 ? newResult : []))
73
+ }));
74
+ case 9:
75
+ case "end":
76
+ return _context.stop();
77
+ }
78
+ }, _callee, this);
79
+ }));
80
+ function getVCResult(_x) {
81
+ return _getVCResult.apply(this, arguments);
82
+ }
83
+ return getVCResult;
84
+ }()
85
+ }, {
86
+ key: "setSSRElement",
87
+ value: function setSSRElement(element) {
88
+ var _this$oldVCObserver5;
89
+ (_this$oldVCObserver5 = this.oldVCObserver) === null || _this$oldVCObserver5 === void 0 || _this$oldVCObserver5.setSSRElement(element);
90
+ }
91
+ }, {
92
+ key: "setReactRootRenderStart",
93
+ value: function setReactRootRenderStart(startTime) {
94
+ var _this$oldVCObserver6;
95
+ (_this$oldVCObserver6 = this.oldVCObserver) === null || _this$oldVCObserver6 === void 0 || _this$oldVCObserver6.setReactRootRenderStart(startTime || performance.now());
96
+ }
97
+ }, {
98
+ key: "setReactRootRenderStop",
99
+ value: function setReactRootRenderStop(stopTime) {
100
+ var _this$oldVCObserver7;
101
+ (_this$oldVCObserver7 = this.oldVCObserver) === null || _this$oldVCObserver7 === void 0 || _this$oldVCObserver7.setReactRootRenderStop(stopTime || performance.now());
102
+ }
103
+ }]);
104
+ }();
2
105
  export var getVCObserver = function getVCObserver() {
3
106
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
4
107
  if (!globalThis.__vcObserver) {
5
- globalThis.__vcObserver = new VCObserver(opts);
108
+ globalThis.__vcObserver = new VCObserverWrapper(opts);
6
109
  }
7
110
  return globalThis.__vcObserver;
8
111
  };
@@ -0,0 +1 @@
1
+ export {};