@atlaskit/react-ufo 3.12.4 → 3.13.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 (109) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/create-experimental-interaction-metrics-payload/index.js +2 -1
  3. package/dist/cjs/create-payload/utils/get-vc-metrics.js +2 -1
  4. package/dist/cjs/vc/index.js +4 -2
  5. package/dist/cjs/vc/vc-observer/getVCRevisionDebugDetails.js +41 -0
  6. package/dist/cjs/vc/vc-observer/index.js +63 -33
  7. package/dist/cjs/vc/vc-observer/observers/index.js +3 -2
  8. package/dist/cjs/vc/vc-observer/observers/ssr-placeholders/index.js +38 -12
  9. package/dist/cjs/vc/vc-observer/observers/ssr-placeholders/ssr-scripts/collectSSRPlaceholderDimensions.js +9 -0
  10. package/dist/cjs/vc/vc-observer-new/index.js +13 -7
  11. package/dist/cjs/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +211 -36
  12. package/dist/cjs/vc/vc-observer-new/metric-calculator/fy25_03/index.js +4 -4
  13. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +94 -4
  14. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/test-with-debug-info.js +108 -0
  15. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +16 -57
  16. package/dist/cjs/vc/vc-observer-new/viewport-observer/index.js +15 -5
  17. package/dist/cjs/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +3 -1
  18. package/dist/es2019/create-experimental-interaction-metrics-payload/index.js +2 -1
  19. package/dist/es2019/create-payload/utils/get-vc-metrics.js +1 -0
  20. package/dist/es2019/vc/index.js +4 -2
  21. package/dist/es2019/vc/vc-observer/getVCRevisionDebugDetails.js +32 -0
  22. package/dist/es2019/vc/vc-observer/index.js +36 -1
  23. package/dist/es2019/vc/vc-observer/observers/index.js +2 -1
  24. package/dist/es2019/vc/vc-observer/observers/ssr-placeholders/index.js +38 -13
  25. package/dist/es2019/vc/vc-observer/observers/ssr-placeholders/ssr-scripts/collectSSRPlaceholderDimensions.js +9 -1
  26. package/dist/es2019/vc/vc-observer-new/index.js +12 -6
  27. package/dist/es2019/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +115 -17
  28. package/dist/es2019/vc/vc-observer-new/metric-calculator/fy25_03/index.js +4 -4
  29. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +44 -1
  30. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/test-with-debug-info.js +75 -0
  31. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +2 -20
  32. package/dist/es2019/vc/vc-observer-new/viewport-observer/index.js +15 -5
  33. package/dist/es2019/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +3 -1
  34. package/dist/esm/create-experimental-interaction-metrics-payload/index.js +2 -1
  35. package/dist/esm/create-payload/utils/get-vc-metrics.js +2 -1
  36. package/dist/esm/vc/index.js +4 -2
  37. package/dist/esm/vc/vc-observer/getVCRevisionDebugDetails.js +35 -0
  38. package/dist/esm/vc/vc-observer/index.js +63 -33
  39. package/dist/esm/vc/vc-observer/observers/index.js +3 -2
  40. package/dist/esm/vc/vc-observer/observers/ssr-placeholders/index.js +38 -12
  41. package/dist/esm/vc/vc-observer/observers/ssr-placeholders/ssr-scripts/collectSSRPlaceholderDimensions.js +9 -0
  42. package/dist/esm/vc/vc-observer-new/index.js +13 -7
  43. package/dist/esm/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +211 -36
  44. package/dist/esm/vc/vc-observer-new/metric-calculator/fy25_03/index.js +4 -4
  45. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +94 -5
  46. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/test-with-debug-info.js +106 -0
  47. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +2 -55
  48. package/dist/esm/vc/vc-observer-new/viewport-observer/index.js +15 -5
  49. package/dist/esm/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +3 -1
  50. package/dist/types/config/index.d.ts +1 -0
  51. package/dist/types/vc/types.d.ts +2 -0
  52. package/dist/types/vc/vc-observer/getVCRevisionDebugDetails.d.ts +30 -0
  53. package/dist/types/vc/vc-observer/index.d.ts +1 -1
  54. package/dist/types/vc/vc-observer/observers/index.d.ts +3 -0
  55. package/dist/types/vc/vc-observer/observers/ssr-placeholders/index.d.ts +4 -1
  56. package/dist/types/vc/vc-observer/observers/ssr-placeholders/ssr-scripts/collectSSRPlaceholderDimensions.d.ts +1 -1
  57. package/dist/types/vc/vc-observer-new/index.d.ts +2 -0
  58. package/dist/types/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +4 -1
  59. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts +5 -1
  60. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/test-with-debug-info.d.ts +1 -0
  61. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/index.d.ts +2 -4
  62. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/types.d.ts +20 -2
  63. package/dist/types/vc/vc-observer-new/metric-calculator/types.d.ts +2 -0
  64. package/dist/types/vc/vc-observer-new/types.d.ts +5 -1
  65. package/dist/types/vc/vc-observer-new/viewport-observer/mutation-observer/index.d.ts +2 -0
  66. package/dist/types/vc/vc-observer-new/viewport-observer/types.d.ts +2 -0
  67. package/dist/types-ts4.5/config/index.d.ts +1 -0
  68. package/dist/types-ts4.5/vc/types.d.ts +2 -0
  69. package/dist/types-ts4.5/vc/vc-observer/getVCRevisionDebugDetails.d.ts +30 -0
  70. package/dist/types-ts4.5/vc/vc-observer/index.d.ts +1 -1
  71. package/dist/types-ts4.5/vc/vc-observer/observers/index.d.ts +3 -0
  72. package/dist/types-ts4.5/vc/vc-observer/observers/ssr-placeholders/index.d.ts +4 -1
  73. package/dist/types-ts4.5/vc/vc-observer/observers/ssr-placeholders/ssr-scripts/collectSSRPlaceholderDimensions.d.ts +1 -1
  74. package/dist/types-ts4.5/vc/vc-observer-new/index.d.ts +2 -0
  75. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +4 -1
  76. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts +5 -1
  77. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/test-with-debug-info.d.ts +1 -0
  78. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/index.d.ts +2 -4
  79. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/types.d.ts +20 -2
  80. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/types.d.ts +2 -0
  81. package/dist/types-ts4.5/vc/vc-observer-new/types.d.ts +5 -1
  82. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/mutation-observer/index.d.ts +2 -0
  83. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/types.d.ts +2 -0
  84. package/package.json +4 -1
  85. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +0 -367
  86. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +0 -398
  87. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +0 -5
  88. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +0 -152
  89. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +0 -108
  90. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +0 -248
  91. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +0 -263
  92. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +0 -1
  93. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +0 -99
  94. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +0 -60
  95. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +0 -361
  96. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +0 -391
  97. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +0 -1
  98. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +0 -145
  99. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +0 -101
  100. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.d.ts +0 -39
  101. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts +0 -10
  102. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.d.ts +0 -43
  103. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.d.ts +0 -12
  104. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.d.ts +0 -25
  105. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.d.ts +0 -39
  106. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts +0 -10
  107. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.d.ts +0 -43
  108. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.d.ts +0 -12
  109. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.d.ts +0 -25
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @atlaskit/ufo-interaction-ignore
2
2
 
3
+ ## 3.13.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#156673](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/156673)
8
+ [`27ecf5244d858`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/27ecf5244d858) -
9
+ Added API to account for page layout in VC calculation
10
+
11
+ ## 3.12.5
12
+
13
+ ### Patch Changes
14
+
15
+ - [#156815](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/156815)
16
+ [`a6856b45ef58f`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/a6856b45ef58f) -
17
+ make ttvc v3 more debugable
18
+
3
19
  ## 3.12.4
4
20
 
5
21
  ### Patch Changes
@@ -112,7 +112,8 @@ function _getExperimentalVCMetrics() {
112
112
  isEventAborted: !!interaction.abortReason,
113
113
  prefix: prefix,
114
114
  vc: interaction.vc,
115
- experienceKey: interaction.ufoName
115
+ experienceKey: interaction.ufoName,
116
+ interactionId: interaction.id
116
117
  });
117
118
  case 4:
118
119
  result = _context.sent;
@@ -65,7 +65,8 @@ function _getVCMetrics() {
65
65
  prefix: prefix,
66
66
  vc: interaction.vc,
67
67
  isEventAborted: interactionStatus.originalInteractionStatus !== 'SUCCEEDED',
68
- experienceKey: interaction.ufoName
68
+ experienceKey: interaction.ufoName,
69
+ interactionId: interaction.id
69
70
  }, ssr));
70
71
  case 18:
71
72
  result = _context.sent;
@@ -131,7 +131,8 @@ var VCObserverWrapper = exports.VCObserverWrapper = /*#__PURE__*/function () {
131
131
  _context.next = 13;
132
132
  return (_this$newVCObserver5 = this.newVCObserver) === null || _this$newVCObserver5 === void 0 ? void 0 : _this$newVCObserver5.getVCResult({
133
133
  start: param.start,
134
- stop: param.stop
134
+ stop: param.stop,
135
+ interactionId: param.interactionId
135
136
  });
136
137
  case 13:
137
138
  _context.t1 = _context.sent;
@@ -158,7 +159,8 @@ var VCObserverWrapper = exports.VCObserverWrapper = /*#__PURE__*/function () {
158
159
  _context.next = 28;
159
160
  return (_this$newVCObserver6 = this.newVCObserver) === null || _this$newVCObserver6 === void 0 ? void 0 : _this$newVCObserver6.getVCResult({
160
161
  start: param.start,
161
- stop: param.stop
162
+ stop: param.stop,
163
+ interactionId: param.interactionId
162
164
  });
163
165
  case 28:
164
166
  newResult = _context.sent;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getVCRevisionDebugDetails = getVCRevisionDebugDetails;
7
+ function getVCRevisionDebugDetails(_ref) {
8
+ var revision = _ref.revision,
9
+ isClean = _ref.isClean,
10
+ abortReason = _ref.abortReason,
11
+ VCEntries = _ref.VCEntries,
12
+ componentsLog = _ref.componentsLog,
13
+ interactionId = _ref.interactionId;
14
+ return {
15
+ revision: revision,
16
+ isClean: isClean,
17
+ abortReason: abortReason,
18
+ vcLogs: VCEntries.map(function (entry) {
19
+ return {
20
+ time: entry.time,
21
+ viewportPercentage: entry.vc,
22
+ entries: entry.elements.map(function (element) {
23
+ var _componentsLog$entry$;
24
+ var logEntry = (_componentsLog$entry$ = componentsLog[entry.time]) === null || _componentsLog$entry$ === void 0 ? void 0 : _componentsLog$entry$.find(function (log) {
25
+ return log.targetName === element;
26
+ });
27
+ return {
28
+ elementName: element,
29
+ type: logEntry === null || logEntry === void 0 ? void 0 : logEntry.type,
30
+ rect: logEntry === null || logEntry === void 0 ? void 0 : logEntry.intersectionRect,
31
+ visible: true,
32
+ attributeName: logEntry === null || logEntry === void 0 ? void 0 : logEntry.attributeName,
33
+ oldValue: logEntry === null || logEntry === void 0 ? void 0 : logEntry.oldValue,
34
+ newValue: logEntry === null || logEntry === void 0 ? void 0 : logEntry.newValue
35
+ };
36
+ })
37
+ };
38
+ }),
39
+ interactionId: interactionId
40
+ };
41
+ }
@@ -17,6 +17,7 @@ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
17
17
  var _config = require("../../config");
18
18
  var _interactionMetrics = require("../../interaction-metrics");
19
19
  var _attachAbortListeners = require("./attachAbortListeners");
20
+ var _getVCRevisionDebugDetails = require("./getVCRevisionDebugDetails");
20
21
  var _getVCRevisionsData = require("./getVCRevisionsData");
21
22
  var _getViewport = require("./getViewport");
22
23
  var _heatmap = require("./heatmap/heatmap");
@@ -106,11 +107,11 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
106
107
  });
107
108
  (0, _defineProperty2.default)(this, "getVCResult", /*#__PURE__*/function () {
108
109
  var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref3) {
109
- var start, stop, tti, prefix, ssr, vc, isEventAborted, experienceKey, startTime, fullPrefix, rawData, abortReason, abortReasonInfo, heatmap, heatmapNext, outOfBoundaryInfo, totalTime, componentsLog, viewport, devToolsEnabled, ratios, multiHeatmap, isTTVCv1Disabled, vcAbortedResultWithRevisions, ttvcV1Result, VC, VCBox, VCEntries, totalPainted, _componentsLog, vcNext, outOfBoundary, stopTime, ttvcV1DevToolInfo, ttvcV2DevToolInfo, isVCClean, revisionsData, speedIndex, isTTVCv3Enabled;
110
+ var start, stop, tti, prefix, ssr, vc, isEventAborted, experienceKey, interactionId, startTime, fullPrefix, rawData, abortReason, abortReasonInfo, heatmap, heatmapNext, outOfBoundaryInfo, totalTime, componentsLog, viewport, devToolsEnabled, ratios, multiHeatmap, isTTVCv1Disabled, vcAbortedResultWithRevisions, ttvcV1Result, VC, VCBox, VCEntries, totalPainted, _componentsLog, vcNext, outOfBoundary, stopTime, ttvcV1DevToolInfo, ttvcV2DevToolInfo, _ufo_devtool_onVCRev2, _ref10, _ufo_devtool_onVCRev, _ref9, isVCClean, revisionsData, speedIndex, isTTVCv3Enabled;
110
111
  return _regenerator.default.wrap(function _callee$(_context) {
111
112
  while (1) switch (_context.prev = _context.next) {
112
113
  case 0:
113
- start = _ref3.start, stop = _ref3.stop, tti = _ref3.tti, prefix = _ref3.prefix, ssr = _ref3.ssr, vc = _ref3.vc, isEventAborted = _ref3.isEventAborted, experienceKey = _ref3.experienceKey;
114
+ start = _ref3.start, stop = _ref3.stop, tti = _ref3.tti, prefix = _ref3.prefix, ssr = _ref3.ssr, vc = _ref3.vc, isEventAborted = _ref3.isEventAborted, experienceKey = _ref3.experienceKey, interactionId = _ref3.interactionId;
114
115
  startTime = performance.now(); // add local measurement
115
116
  fullPrefix = prefix !== undefined && prefix !== '' ? "".concat(prefix, ":") : '';
116
117
  rawData = vc !== undefined ? vc : _this.getVCRawData();
@@ -287,6 +288,31 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
287
288
  entries: isTTVCv1Disabled ? vcNext.VCEntries.rel : VCEntries.rel
288
289
  }
289
290
  }));
291
+
292
+ // Add devtool callback for both v1 and v2
293
+ if (typeof window.__ufo_devtool_onVCRevisionReady__ === 'function' && (0, _platformFeatureFlags.fg)('platform_ufo_ttvc_v3_devtool')) {
294
+ // Handle v1 if not disabled
295
+ if (!isTTVCv1Disabled) {
296
+ (_ufo_devtool_onVCRev = (_ref9 = window).__ufo_devtool_onVCRevisionReady__) === null || _ufo_devtool_onVCRev === void 0 || _ufo_devtool_onVCRev.call(_ref9, (0, _getVCRevisionDebugDetails.getVCRevisionDebugDetails)({
297
+ revision: 'fy25.01',
298
+ isClean: !abortReasonInfo,
299
+ abortReason: abortReason.reason,
300
+ VCEntries: VCEntries.rel,
301
+ componentsLog: componentsLog,
302
+ interactionId: interactionId
303
+ }));
304
+ }
305
+
306
+ // Handle v2
307
+ (_ufo_devtool_onVCRev2 = (_ref10 = window).__ufo_devtool_onVCRevisionReady__) === null || _ufo_devtool_onVCRev2 === void 0 || _ufo_devtool_onVCRev2.call(_ref10, (0, _getVCRevisionDebugDetails.getVCRevisionDebugDetails)({
308
+ revision: 'fy25.02',
309
+ isClean: !abortReasonInfo,
310
+ abortReason: abortReason.reason,
311
+ VCEntries: vcNext.VCEntries.rel,
312
+ componentsLog: componentsLog,
313
+ interactionId: interactionId
314
+ }));
315
+ }
290
316
  }
291
317
  } catch (e) {
292
318
  /* do nothing */
@@ -387,16 +413,16 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
387
413
  });
388
414
  }
389
415
  });
390
- (0, _defineProperty2.default)(this, "onViewportChangeDetected", function (_ref9) {
391
- var element = _ref9.element,
392
- type = _ref9.type,
393
- ignoreReason = _ref9.ignoreReason,
394
- timestamp = _ref9.timestamp,
395
- targetName = _ref9.targetName,
396
- intersectionRect = _ref9.intersectionRect,
397
- attributeName = _ref9.attributeName,
398
- oldValue = _ref9.oldValue,
399
- newValue = _ref9.newValue;
416
+ (0, _defineProperty2.default)(this, "onViewportChangeDetected", function (_ref11) {
417
+ var element = _ref11.element,
418
+ type = _ref11.type,
419
+ ignoreReason = _ref11.ignoreReason,
420
+ timestamp = _ref11.timestamp,
421
+ targetName = _ref11.targetName,
422
+ intersectionRect = _ref11.intersectionRect,
423
+ attributeName = _ref11.attributeName,
424
+ oldValue = _ref11.oldValue,
425
+ newValue = _ref11.newValue;
400
426
  if (_this.multiHeatmap === null) {
401
427
  return;
402
428
  }
@@ -481,10 +507,10 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
481
507
  var unbinds = (0, _attachAbortListeners.attachAbortListeners)(window, _this.viewport, _this.abortReasonCallback);
482
508
  if ((_window = window) !== null && _window !== void 0 && _window.__SSR_ABORT_LISTENERS__) {
483
509
  var _window2;
484
- Object.entries(window.__SSR_ABORT_LISTENERS__.aborts).forEach(function (_ref10) {
485
- var _ref11 = (0, _slicedToArray2.default)(_ref10, 2),
486
- key = _ref11[0],
487
- time = _ref11[1];
510
+ Object.entries(window.__SSR_ABORT_LISTENERS__.aborts).forEach(function (_ref12) {
511
+ var _ref13 = (0, _slicedToArray2.default)(_ref12, 2),
512
+ key = _ref13[0],
513
+ time = _ref13[1];
488
514
  if (time) {
489
515
  _this.abortReasonCallback(key, time);
490
516
  }
@@ -497,6 +523,7 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
497
523
  this.arraySize = options.heatmapSize || 200;
498
524
  this.devToolsEnabled = options.devToolsEnabled || false;
499
525
  this.oldDomUpdatesEnabled = options.oldDomUpdates || false;
526
+ var ssrEnablePageLayoutPlaceholder = options.ssrEnablePageLayoutPlaceholder;
500
527
  this.observers = new _observers.Observers({
501
528
  selectorConfig: options.selectorConfig || {
502
529
  id: false,
@@ -504,6 +531,9 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
504
531
  role: false,
505
532
  className: true,
506
533
  dataVC: true
534
+ },
535
+ SSRConfig: {
536
+ enablePageLayoutPlaceholder: ssrEnablePageLayoutPlaceholder || false
507
537
  }
508
538
  });
509
539
  this.heatmap = !(0, _config.isVCRevisionEnabled)('fy25.01') ? [] : this.getCleanHeatmap();
@@ -517,8 +547,8 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
517
547
  }
518
548
  return (0, _createClass2.default)(VCObserver, [{
519
549
  key: "start",
520
- value: function start(_ref12) {
521
- var startTime = _ref12.startTime;
550
+ value: function start(_ref14) {
551
+ var startTime = _ref14.startTime;
522
552
  this.active = true;
523
553
  if (this.observers.isBrowserSupported()) {
524
554
  this.setViewportSize();
@@ -540,12 +570,12 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
540
570
  }, {
541
571
  key: "getIgnoredElements",
542
572
  value: function getIgnoredElements(componentsLog) {
543
- return Object.values(componentsLog).flat().filter(function (_ref13) {
544
- var ignoreReason = _ref13.ignoreReason;
573
+ return Object.values(componentsLog).flat().filter(function (_ref15) {
574
+ var ignoreReason = _ref15.ignoreReason;
545
575
  return Boolean(ignoreReason);
546
- }).map(function (_ref14) {
547
- var targetName = _ref14.targetName,
548
- ignoreReason = _ref14.ignoreReason;
576
+ }).map(function (_ref16) {
577
+ var targetName = _ref16.targetName,
578
+ ignoreReason = _ref16.ignoreReason;
549
579
  return {
550
580
  targetName: targetName,
551
581
  ignoreReason: ignoreReason
@@ -668,12 +698,12 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
668
698
  }
669
699
  }], [{
670
700
  key: "calculateVC",
671
- value: function calculateVC(_ref15) {
672
- var heatmap = _ref15.heatmap,
673
- _ref15$ssr = _ref15.ssr,
674
- ssr = _ref15$ssr === void 0 ? UNUSED_SECTOR : _ref15$ssr,
675
- componentsLog = _ref15.componentsLog,
676
- viewport = _ref15.viewport;
701
+ value: function calculateVC(_ref17) {
702
+ var heatmap = _ref17.heatmap,
703
+ _ref17$ssr = _ref17.ssr,
704
+ ssr = _ref17$ssr === void 0 ? UNUSED_SECTOR : _ref17$ssr,
705
+ componentsLog = _ref17.componentsLog,
706
+ viewport = _ref17.viewport;
677
707
  var lastUpdate = {};
678
708
  var totalPainted = 0;
679
709
  if (ssr !== UNUSED_SECTOR) {
@@ -739,11 +769,11 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
739
769
  });
740
770
  return VCRatio;
741
771
  }, 0);
742
- var VCEntries = entries.reduce(function (acc, _ref16, i) {
772
+ var VCEntries = entries.reduce(function (acc, _ref18, i) {
743
773
  var _acc$abs, _componentsLog$timest, _acc$rel$vc, _acc$rel;
744
- var _ref17 = (0, _slicedToArray2.default)(_ref16, 2),
745
- timestamp = _ref17[0],
746
- entryPainted = _ref17[1];
774
+ var _ref19 = (0, _slicedToArray2.default)(_ref18, 2),
775
+ timestamp = _ref19[0],
776
+ entryPainted = _ref19[1];
747
777
  var currentlyPainted = entryPainted + (((_acc$abs = acc.abs[i - 1]) === null || _acc$abs === void 0 ? void 0 : _acc$abs[1]) || 0);
748
778
  var currentlyPaintedRatio = Math.round(currentlyPainted / totalPainted * 1000) / 10;
749
779
  var logEntry = (0, _toConsumableArray2.default)(new Set((_componentsLog$timest = componentsLog[timestamp]) === null || _componentsLog$timest === void 0 ? void 0 : _componentsLog$timest.filter(function (v) {
@@ -31,7 +31,8 @@ function isElementVisible(target) {
31
31
  }
32
32
  var Observers = exports.Observers = /*#__PURE__*/function () {
33
33
  function Observers(opts) {
34
- var _this = this;
34
+ var _this = this,
35
+ _opts$SSRConfig;
35
36
  (0, _classCallCheck2.default)(this, Observers);
36
37
  (0, _defineProperty2.default)(this, "observedMutations", new WeakMap());
37
38
  (0, _defineProperty2.default)(this, "elementsInView", new Set());
@@ -71,7 +72,7 @@ var Observers = exports.Observers = /*#__PURE__*/function () {
71
72
  this.selectorConfig = _objectSpread(_objectSpread({}, this.selectorConfig), opts.selectorConfig);
72
73
  this.intersectionObserver = this.getIntersectionObserver();
73
74
  this.mutationObserver = this.getMutationObserver();
74
- this.ssrPlaceholderHandler = new _ssrPlaceholders.SSRPlaceholderHandlers();
75
+ this.ssrPlaceholderHandler = new _ssrPlaceholders.SSRPlaceholderHandlers((_opts$SSRConfig = opts.SSRConfig) === null || _opts$SSRConfig === void 0 ? void 0 : _opts$SSRConfig.enablePageLayoutPlaceholder);
75
76
  }
76
77
  return (0, _createClass2.default)(Observers, [{
77
78
  key: "isBrowserSupported",
@@ -9,15 +9,39 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
9
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
  var ANCESTOR_LOOKUP_LIMIT = 10;
12
+ var PAGE_LAYOUT_ID = 'page-layout.root';
12
13
  var SSRPlaceholderHandlers = exports.SSRPlaceholderHandlers = /*#__PURE__*/function () {
13
14
  function SSRPlaceholderHandlers() {
14
15
  var _this = this;
16
+ var enablePageLayoutPlaceholder = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
15
17
  (0, _classCallCheck2.default)(this, SSRPlaceholderHandlers);
16
18
  (0, _defineProperty2.default)(this, "staticPlaceholders", new Map());
17
19
  (0, _defineProperty2.default)(this, "callbacks", new Map());
18
20
  (0, _defineProperty2.default)(this, "getSizeCallbacks", new Map());
19
21
  (0, _defineProperty2.default)(this, "reactValidateCallbacks", new Map());
20
22
  (0, _defineProperty2.default)(this, "EQUALITY_THRESHOLD", 1);
23
+ (0, _defineProperty2.default)(this, "getPlaceholderId", function (el) {
24
+ var _el$dataset;
25
+ var ssrPlaceholderId = el === null || el === void 0 || (_el$dataset = el.dataset) === null || _el$dataset === void 0 ? void 0 : _el$dataset.ssrPlaceholder;
26
+ if (!!ssrPlaceholderId) {
27
+ return ssrPlaceholderId;
28
+ }
29
+ if (_this.enablePageLayoutPlaceholder && (el === null || el === void 0 ? void 0 : el.dataset.testid) === PAGE_LAYOUT_ID) {
30
+ return PAGE_LAYOUT_ID;
31
+ }
32
+ return '';
33
+ });
34
+ (0, _defineProperty2.default)(this, "getPlaceholderReplacementId", function (el) {
35
+ var _el$dataset2;
36
+ var ssrPlaceholderReplaceId = el === null || el === void 0 || (_el$dataset2 = el.dataset) === null || _el$dataset2 === void 0 ? void 0 : _el$dataset2.ssrPlaceholderReplace;
37
+ if (!!ssrPlaceholderReplaceId) {
38
+ return ssrPlaceholderReplaceId;
39
+ }
40
+ if (_this.enablePageLayoutPlaceholder && (el === null || el === void 0 ? void 0 : el.dataset.testid) === PAGE_LAYOUT_ID) {
41
+ return PAGE_LAYOUT_ID;
42
+ }
43
+ return '';
44
+ });
21
45
  (0, _defineProperty2.default)(this, "intersectionObserverCallback", function (_ref) {
22
46
  var _this$intersectionObs;
23
47
  var target = _ref.target,
@@ -27,7 +51,7 @@ var SSRPlaceholderHandlers = exports.SSRPlaceholderHandlers = /*#__PURE__*/funct
27
51
  // impossible case - keep typescript healthy
28
52
  return;
29
53
  }
30
- var staticKey = target.dataset.ssrPlaceholder || '';
54
+ var staticKey = _this.getPlaceholderId(target);
31
55
  if (staticKey) {
32
56
  if (_this.staticPlaceholders.has(staticKey) && _this.callbacks.has(staticKey)) {
33
57
  // validation
@@ -49,7 +73,7 @@ var SSRPlaceholderHandlers = exports.SSRPlaceholderHandlers = /*#__PURE__*/funct
49
73
  _this.callbacks.delete(staticKey);
50
74
  }
51
75
  } else {
52
- var key = target.dataset.ssrPlaceholderReplace || '';
76
+ var key = _this.getPlaceholderReplacementId(target);
53
77
  var _resolve2 = _this.reactValidateCallbacks.get(key);
54
78
  if (!_resolve2) {
55
79
  return;
@@ -77,25 +101,27 @@ var SSRPlaceholderHandlers = exports.SSRPlaceholderHandlers = /*#__PURE__*/funct
77
101
  }).forEach(_this.intersectionObserverCallback);
78
102
  });
79
103
  }
104
+ this.enablePageLayoutPlaceholder = enablePageLayoutPlaceholder;
80
105
  if (window.document) {
81
106
  try {
82
- var existingElements = document.querySelectorAll('[data-ssr-placeholder]');
107
+ var selector = this.enablePageLayoutPlaceholder ? '[data-ssr-placeholder],[data-testid="page-layout.root"]' : '[data-ssr-placeholder]';
108
+ var existingElements = document.querySelectorAll(selector);
83
109
  existingElements.forEach(function (el) {
84
- var _el$dataset;
85
- if (el instanceof HTMLElement && el !== null && el !== void 0 && (_el$dataset = el.dataset) !== null && _el$dataset !== void 0 && _el$dataset.ssrPlaceholder) {
110
+ var placeholderId = el instanceof HTMLElement && _this.getPlaceholderId(el);
111
+ if (placeholderId) {
86
112
  var _window$__SSR_PLACEHO, _this$intersectionObs2;
87
113
  var width = -1;
88
114
  var height = -1;
89
115
  var x = -1;
90
116
  var y = -1;
91
- var boundingClientRect = (_window$__SSR_PLACEHO = window.__SSR_PLACEHOLDERS_DIMENSIONS__) === null || _window$__SSR_PLACEHO === void 0 ? void 0 : _window$__SSR_PLACEHO[el.dataset.ssrPlaceholder];
117
+ var boundingClientRect = (_window$__SSR_PLACEHO = window.__SSR_PLACEHOLDERS_DIMENSIONS__) === null || _window$__SSR_PLACEHO === void 0 ? void 0 : _window$__SSR_PLACEHO[placeholderId];
92
118
  if (boundingClientRect) {
93
119
  width = boundingClientRect.width;
94
120
  height = boundingClientRect.height;
95
121
  x = boundingClientRect.x;
96
122
  y = boundingClientRect.y;
97
123
  }
98
- _this.staticPlaceholders.set(el.dataset.ssrPlaceholder, {
124
+ _this.staticPlaceholders.set(placeholderId, {
99
125
  width: width,
100
126
  height: height,
101
127
  x: x,
@@ -120,12 +146,12 @@ var SSRPlaceholderHandlers = exports.SSRPlaceholderHandlers = /*#__PURE__*/funct
120
146
  }, {
121
147
  key: "isPlaceholder",
122
148
  value: function isPlaceholder(element) {
123
- return Boolean(element.dataset.ssrPlaceholder);
149
+ return Boolean(this.getPlaceholderId(element));
124
150
  }
125
151
  }, {
126
152
  key: "isPlaceholderReplacement",
127
153
  value: function isPlaceholderReplacement(element) {
128
- return Boolean(element.dataset.ssrPlaceholderReplace);
154
+ return Boolean(this.getPlaceholderReplacementId(element));
129
155
  }
130
156
  }, {
131
157
  key: "isPlaceholderIgnored",
@@ -155,7 +181,7 @@ var SSRPlaceholderHandlers = exports.SSRPlaceholderHandlers = /*#__PURE__*/funct
155
181
  value: function checkIfExistedAndSizeMatching(el) {
156
182
  var _this2 = this;
157
183
  el = this.findNearestPlaceholderContainerIfIgnored(el);
158
- var id = el.dataset.ssrPlaceholder || '';
184
+ var id = this.getPlaceholderId(el);
159
185
  return new Promise(function (resolve) {
160
186
  if (!_this2.staticPlaceholders.has(id)) {
161
187
  resolve(false);
@@ -173,7 +199,7 @@ var SSRPlaceholderHandlers = exports.SSRPlaceholderHandlers = /*#__PURE__*/funct
173
199
  var _this3 = this;
174
200
  return new Promise(function (resolve) {
175
201
  var _this3$intersectionOb;
176
- _this3.getSizeCallbacks.set(el.dataset.ssrPlaceholder || '', resolve);
202
+ _this3.getSizeCallbacks.set(_this3.getPlaceholderId(el), resolve);
177
203
  (_this3$intersectionOb = _this3.intersectionObserver) === null || _this3$intersectionOb === void 0 || _this3$intersectionOb.observe(el);
178
204
  });
179
205
  }
@@ -182,7 +208,7 @@ var SSRPlaceholderHandlers = exports.SSRPlaceholderHandlers = /*#__PURE__*/funct
182
208
  value: function validateReactComponentMatchToPlaceholder(el) {
183
209
  var _this4 = this;
184
210
  el = this.findNearestPlaceholderContainerIfIgnored(el);
185
- var id = el.dataset.ssrPlaceholderReplace || '';
211
+ var id = this.getPlaceholderReplacementId(el);
186
212
  return new Promise(function (resolve) {
187
213
  if (!_this4.staticPlaceholders.has(id)) {
188
214
  resolve(false);
@@ -8,6 +8,7 @@ exports.collectSSRPlaceholderDimensions = collectSSRPlaceholderDimensions;
8
8
  // and save their size/positions in a map __SSR_PLACEHOLDERS_DIMENSIONS__ on the Window object. Each placeholderId is
9
9
  // unique and maps to its corresponding elements bounding client rectangle dimensions.
10
10
  function collectSSRPlaceholderDimensions(document, window) {
11
+ var enablePageLayoutPlaceholder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
11
12
  var ssrPlaceholders = document === null || document === void 0 ? void 0 : document.querySelectorAll('[data-ssr-placeholder]');
12
13
  ssrPlaceholders.forEach(function (elem) {
13
14
  var placeholderId = elem.getAttribute('data-ssr-placeholder');
@@ -17,4 +18,12 @@ function collectSSRPlaceholderDimensions(document, window) {
17
18
  window.__SSR_PLACEHOLDERS_DIMENSIONS__[placeholderId] = boundingClient;
18
19
  }
19
20
  });
21
+ if (enablePageLayoutPlaceholder) {
22
+ var pageLayoutRoot = document === null || document === void 0 ? void 0 : document.getElementById('unsafe-design-system-page-layout-root');
23
+ if (pageLayoutRoot) {
24
+ var boundingClient = pageLayoutRoot.getBoundingClientRect();
25
+ window.__SSR_PLACEHOLDERS_DIMENSIONS__ = window.__SSR_PLACEHOLDERS_DIMENSIONS__ || {};
26
+ window.__SSR_PLACEHOLDERS_DIMENSIONS__['page-layout.root'] = boundingClient;
27
+ }
28
+ }
20
29
  }
@@ -24,12 +24,14 @@ var DEFAULT_SELECTOR_CONFIG = {
24
24
  };
25
25
  var VCObserverNew = exports.default = /*#__PURE__*/function () {
26
26
  function VCObserverNew(config) {
27
- var _config$selectorConfi,
27
+ var _config$isPostInterac,
28
+ _config$selectorConfi,
28
29
  _this = this;
29
30
  (0, _classCallCheck2.default)(this, VCObserverNew);
30
31
  (0, _defineProperty2.default)(this, "viewportObserver", null);
31
32
  (0, _defineProperty2.default)(this, "windowEventObserver", null);
32
33
  this.entriesTimeline = new _entriesTimeline.default();
34
+ this.isPostInteraction = (_config$isPostInterac = config.isPostInteraction) !== null && _config$isPostInterac !== void 0 ? _config$isPostInterac : false;
33
35
  this.selectorConfig = (_config$selectorConfi = config.selectorConfig) !== null && _config$selectorConfi !== void 0 ? _config$selectorConfi : DEFAULT_SELECTOR_CONFIG;
34
36
  this.viewportObserver = new _viewportObserver.default({
35
37
  onChange: function onChange(onChangeArg) {
@@ -47,13 +49,15 @@ var VCObserverNew = exports.default = /*#__PURE__*/function () {
47
49
  }
48
50
  _this.entriesTimeline.push({
49
51
  time: time,
50
- type: type,
51
52
  data: {
53
+ type: type,
52
54
  elementName: elementName,
53
55
  rect: rect,
54
56
  previousRect: previousRect,
55
57
  visible: visible,
56
- attributeName: mutationData === null || mutationData === void 0 ? void 0 : mutationData.attributeName
58
+ attributeName: mutationData === null || mutationData === void 0 ? void 0 : mutationData.attributeName,
59
+ oldValue: mutationData === null || mutationData === void 0 ? void 0 : mutationData.oldValue,
60
+ newValue: mutationData === null || mutationData === void 0 ? void 0 : mutationData.newValue
57
61
  }
58
62
  });
59
63
  }
@@ -64,8 +68,8 @@ var VCObserverNew = exports.default = /*#__PURE__*/function () {
64
68
  type = _ref.type;
65
69
  _this.entriesTimeline.push({
66
70
  time: time,
67
- type: 'window:event',
68
71
  data: {
72
+ type: 'window:event',
69
73
  eventType: type
70
74
  }
71
75
  });
@@ -92,11 +96,11 @@ var VCObserverNew = exports.default = /*#__PURE__*/function () {
92
96
  key: "getVCResult",
93
97
  value: function () {
94
98
  var _getVCResult = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(param) {
95
- var start, stop, results, calculator_fy25_03, orderedEntries, fy25_03;
99
+ var start, stop, interactionId, results, calculator_fy25_03, orderedEntries, fy25_03;
96
100
  return _regenerator.default.wrap(function _callee$(_context) {
97
101
  while (1) switch (_context.prev = _context.next) {
98
102
  case 0:
99
- start = param.start, stop = param.stop;
103
+ start = param.start, stop = param.stop, interactionId = param.interactionId;
100
104
  results = [];
101
105
  calculator_fy25_03 = new _fy25_.default();
102
106
  orderedEntries = this.entriesTimeline.getOrderedEntries({
@@ -107,7 +111,9 @@ var VCObserverNew = exports.default = /*#__PURE__*/function () {
107
111
  return calculator_fy25_03.calculate({
108
112
  orderedEntries: orderedEntries,
109
113
  startTime: start,
110
- stopTime: stop
114
+ stopTime: stop,
115
+ interactionId: interactionId,
116
+ isPostInteraction: this.isPostInteraction
111
117
  });
112
118
  case 6:
113
119
  fy25_03 = _context.sent;