@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
@@ -1,55 +1,2 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- import _regeneratorRuntime from "@babel/runtime/regenerator";
3
- import calcUsingCanvas from './canvas-heatmap';
4
- import calcUsingOldHeatmap from './heatmap';
5
- import calcUsingRectSweepingLine from './rect-sweeping-line';
6
- function calculateTTVCPercentiles(_x) {
7
- return _calculateTTVCPercentiles.apply(this, arguments);
8
- }
9
- function _calculateTTVCPercentiles() {
10
- _calculateTTVCPercentiles = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(arg) {
11
- var algo, vcDetails, _vcDetails, _vcDetails2;
12
- return _regeneratorRuntime.wrap(function _callee$(_context) {
13
- while (1) switch (_context.prev = _context.next) {
14
- case 0:
15
- algo = 'canvas_heatmap';
16
- if (!(algo === 'canvas_heatmap')) {
17
- _context.next = 6;
18
- break;
19
- }
20
- _context.next = 4;
21
- return calcUsingCanvas(arg);
22
- case 4:
23
- vcDetails = _context.sent;
24
- return _context.abrupt("return", vcDetails);
25
- case 6:
26
- if (!(algo === 'rect_sweeping')) {
27
- _context.next = 11;
28
- break;
29
- }
30
- _context.next = 9;
31
- return calcUsingRectSweepingLine(arg);
32
- case 9:
33
- _vcDetails = _context.sent;
34
- return _context.abrupt("return", _vcDetails);
35
- case 11:
36
- if (!(algo === 'old_heatmap')) {
37
- _context.next = 16;
38
- break;
39
- }
40
- _context.next = 14;
41
- return calcUsingOldHeatmap(arg);
42
- case 14:
43
- _vcDetails2 = _context.sent;
44
- return _context.abrupt("return", _vcDetails2);
45
- case 16:
46
- throw new Error('unexpected Error algo not chosen correctly');
47
- case 17:
48
- case "end":
49
- return _context.stop();
50
- }
51
- }, _callee);
52
- }));
53
- return _calculateTTVCPercentiles.apply(this, arguments);
54
- }
55
- export default calculateTTVCPercentiles;
1
+ export { default as calculateTTVCPercentiles } from './canvas-heatmap';
2
+ export { calculateTTVCPercentilesWithDebugInfo } from './canvas-heatmap';
@@ -116,7 +116,9 @@ var ViewportObserver = /*#__PURE__*/function () {
116
116
  _defineProperty(this, "handleAttributeMutation", function (_ref5) {
117
117
  var _this$intersectionObs4;
118
118
  var target = _ref5.target,
119
- attributeName = _ref5.attributeName;
119
+ attributeName = _ref5.attributeName,
120
+ oldValue = _ref5.oldValue,
121
+ newValue = _ref5.newValue;
120
122
  (_this$intersectionObs4 = _this.intersectionObserver) === null || _this$intersectionObs4 === void 0 || _this$intersectionObs4.watchAndTag(target, function (_ref6) {
121
123
  var target = _ref6.target,
122
124
  rect = _ref6.rect;
@@ -124,7 +126,9 @@ var ViewportObserver = /*#__PURE__*/function () {
124
126
  return {
125
127
  type: 'mutation:media',
126
128
  mutationData: {
127
- attributeName: attributeName
129
+ attributeName: attributeName,
130
+ oldValue: oldValue,
131
+ newValue: newValue
128
132
  }
129
133
  };
130
134
  }
@@ -136,7 +140,9 @@ var ViewportObserver = /*#__PURE__*/function () {
136
140
  return {
137
141
  type: 'mutation:attribute:non-visual-style',
138
142
  mutationData: {
139
- attributeName: attributeName
143
+ attributeName: attributeName,
144
+ oldValue: oldValue,
145
+ newValue: newValue
140
146
  }
141
147
  };
142
148
  }
@@ -145,14 +151,18 @@ var ViewportObserver = /*#__PURE__*/function () {
145
151
  return {
146
152
  type: 'mutation:attribute:no-layout-shift',
147
153
  mutationData: {
148
- attributeName: attributeName
154
+ attributeName: attributeName,
155
+ oldValue: oldValue,
156
+ newValue: newValue
149
157
  }
150
158
  };
151
159
  }
152
160
  return {
153
161
  type: 'mutation:attribute',
154
162
  mutationData: {
155
- attributeName: attributeName
163
+ attributeName: attributeName,
164
+ oldValue: oldValue,
165
+ newValue: newValue
156
166
  }
157
167
  };
158
168
  });
@@ -36,7 +36,9 @@ function createMutationObserver(_ref) {
36
36
  var _mut$attributeName;
37
37
  onAttributeMutation({
38
38
  target: mut.target,
39
- attributeName: (_mut$attributeName = mut.attributeName) !== null && _mut$attributeName !== void 0 ? _mut$attributeName : 'unknown'
39
+ attributeName: (_mut$attributeName = mut.attributeName) !== null && _mut$attributeName !== void 0 ? _mut$attributeName : 'unknown',
40
+ oldValue: oldValue,
41
+ newValue: newValue
40
42
  });
41
43
  }
42
44
  continue;
@@ -73,6 +73,7 @@ export type Config = {
73
73
  readonly selectorConfig?: SelectorConfig;
74
74
  readonly ssr?: boolean;
75
75
  readonly ssrWhitelist?: string[];
76
+ readonly ssrEnablePageLayoutPlaceholder?: boolean;
76
77
  readonly stopVCAtInteractionFinish?: boolean;
77
78
  /**
78
79
  * The revisions of TTVC that will be calculated
@@ -8,6 +8,7 @@ export type GetVCResultType = {
8
8
  ssr?: number;
9
9
  vc?: VCRawDataType | null;
10
10
  experienceKey: string;
11
+ interactionId?: string;
11
12
  };
12
13
  export type SelectorConfig = {
13
14
  id: boolean;
@@ -22,6 +23,7 @@ export type VCObserverOptions = {
22
23
  devToolsEnabled?: boolean | undefined;
23
24
  selectorConfig?: SelectorConfig | undefined;
24
25
  isPostInteraction?: boolean;
26
+ ssrEnablePageLayoutPlaceholder?: boolean;
25
27
  };
26
28
  export interface VCObserverInterface {
27
29
  start(startArg: {
@@ -0,0 +1,30 @@
1
+ import type { ComponentsLogType, VCEntryType } from '../../common/vc/types';
2
+ import type { VCObserverEntryType } from '../vc-observer-new/types';
3
+ interface VCRevisionDebugDetails {
4
+ revision: string;
5
+ isClean: boolean;
6
+ abortReason: string | null;
7
+ vcLogs: Array<{
8
+ time: number;
9
+ viewportPercentage: number;
10
+ entries: Array<{
11
+ elementName: string;
12
+ type: VCObserverEntryType;
13
+ rect: DOMRect;
14
+ visible: boolean;
15
+ attributeName?: string | null;
16
+ oldValue?: string | null;
17
+ newValue?: string | null;
18
+ }>;
19
+ }>;
20
+ interactionId?: string;
21
+ }
22
+ export declare function getVCRevisionDebugDetails({ revision, isClean, abortReason, VCEntries, componentsLog, interactionId, }: {
23
+ revision: string;
24
+ isClean: boolean;
25
+ abortReason: string | null;
26
+ VCEntries: VCEntryType[];
27
+ componentsLog: ComponentsLogType;
28
+ interactionId?: string;
29
+ }): VCRevisionDebugDetails;
30
+ export {};
@@ -41,7 +41,7 @@ export declare class VCObserver implements VCObserverInterface {
41
41
  targetName: string;
42
42
  ignoreReason: VCIgnoreReason | undefined;
43
43
  }[];
44
- getVCResult: ({ start, stop, tti, prefix, ssr, vc, isEventAborted, experienceKey, }: GetVCResultType) => Promise<VCResult>;
44
+ getVCResult: ({ start, stop, tti, prefix, ssr, vc, isEventAborted, experienceKey, interactionId, }: GetVCResultType) => Promise<VCResult>;
45
45
  static calculateVC({ heatmap, ssr, componentsLog, viewport, }: {
46
46
  heatmap: number[][];
47
47
  ssr?: number;
@@ -9,6 +9,9 @@ export type SelectorConfig = {
9
9
  };
10
10
  type ConstructorOptions = {
11
11
  selectorConfig: SelectorConfig;
12
+ SSRConfig?: {
13
+ enablePageLayoutPlaceholder: boolean;
14
+ };
12
15
  };
13
16
  export declare class Observers implements BrowserObservers {
14
17
  private intersectionObserver;
@@ -11,7 +11,10 @@ export declare class SSRPlaceholderHandlers {
11
11
  private reactValidateCallbacks;
12
12
  private intersectionObserver;
13
13
  private EQUALITY_THRESHOLD;
14
- constructor();
14
+ private enablePageLayoutPlaceholder;
15
+ constructor(enablePageLayoutPlaceholder?: boolean);
16
+ private getPlaceholderId;
17
+ private getPlaceholderReplacementId;
15
18
  clear(): void;
16
19
  isPlaceholder(element: HTMLElement): boolean;
17
20
  isPlaceholderReplacement(element: HTMLElement): boolean;
@@ -1 +1 @@
1
- export declare function collectSSRPlaceholderDimensions(document: Document, window: Window): void;
1
+ export declare function collectSSRPlaceholderDimensions(document: Document, window: Window, enablePageLayoutPlaceholder?: boolean): void;
@@ -3,12 +3,14 @@ import { type SelectorConfig } from './get-element-name';
3
3
  import type { VCObserverGetVCResultParam } from './types';
4
4
  export type VCObserverNewConfig = {
5
5
  selectorConfig?: SelectorConfig;
6
+ isPostInteraction?: boolean;
6
7
  };
7
8
  export default class VCObserverNew {
8
9
  private selectorConfig;
9
10
  private viewportObserver;
10
11
  private windowEventObserver;
11
12
  private entriesTimeline;
13
+ private isPostInteraction;
12
14
  constructor(config: VCObserverNewConfig);
13
15
  start({ startTime }: {
14
16
  startTime: DOMHighResTimeStamp;
@@ -10,5 +10,8 @@ export default abstract class AbstractVCCalculatorBase implements VCCalculator {
10
10
  isVCClean: boolean;
11
11
  dirtyReason?: VCAbortReason;
12
12
  };
13
- calculate({ startTime, stopTime, orderedEntries, }: VCCalculatorParam): Promise<RevisionPayloadEntry | undefined>;
13
+ private filterViewportEntries;
14
+ private calculateBasic;
15
+ private calculateWithDebugInfo;
16
+ calculate({ startTime, stopTime, orderedEntries, interactionId, isPostInteraction, }: VCCalculatorParam): Promise<RevisionPayloadEntry | undefined>;
14
17
  }
@@ -1,5 +1,9 @@
1
1
  import type { RevisionPayloadVCDetails } from '../../../../../common/vc/types';
2
- import type { CalcTTVCPercentilesArg } from '../types';
2
+ import type { ViewportEntryData } from '../../../types';
3
+ import type { CalcTTVCPercentilesArg, CalcTTVCPercentilesArgWithDebugInfo, PercentileCalcResult } from '../types';
3
4
  declare function calculateTTVCPercentiles({ viewport, orderedEntries, percentiles, startTime, }: CalcTTVCPercentilesArg): Promise<RevisionPayloadVCDetails>;
5
+ declare function calculateTTVCPercentilesWithDebugInfo({ viewport, orderedEntries, startTime, }: CalcTTVCPercentilesArgWithDebugInfo): Promise<PercentileCalcResult>;
4
6
  export default calculateTTVCPercentiles;
5
7
  export declare function calculatePercentiles(timePixelCounts: Map<DOMHighResTimeStamp, number>, elementMap: ReadonlyMap<DOMHighResTimeStamp, Set<string>>, unorderedPercentiles: number[], totalPixels: number, startTime: DOMHighResTimeStamp): RevisionPayloadVCDetails;
8
+ export declare function calculatePercentilesWithDebugInfo(timePixelCounts: Map<DOMHighResTimeStamp, number>, elementMap: ReadonlyMap<DOMHighResTimeStamp, ViewportEntryData[]>, totalPixels: number, startTime: DOMHighResTimeStamp): PercentileCalcResult;
9
+ export { calculateTTVCPercentilesWithDebugInfo };
@@ -1,4 +1,2 @@
1
- import type { RevisionPayloadVCDetails } from '../../../../common/vc/types';
2
- import type { CalcTTVCPercentilesArg } from './types';
3
- declare function calculateTTVCPercentiles(arg: CalcTTVCPercentilesArg): Promise<RevisionPayloadVCDetails | null>;
4
- export default calculateTTVCPercentiles;
1
+ export { default as calculateTTVCPercentiles } from './canvas-heatmap';
2
+ export { calculateTTVCPercentilesWithDebugInfo } from './canvas-heatmap';
@@ -1,11 +1,29 @@
1
- import type { VCObserverEntry } from '../../types';
1
+ import type { VCObserverEntry, ViewportEntryData } from '../../types';
2
2
  export type CalcTTVCPercentilesArg = {
3
3
  viewport: {
4
4
  width: number;
5
5
  height: number;
6
6
  };
7
+ orderedEntries: ReadonlyArray<VCObserverEntry>;
8
+ percentiles: number[];
7
9
  startTime: DOMHighResTimeStamp;
8
10
  stopTime: DOMHighResTimeStamp;
11
+ };
12
+ export type CalcTTVCPercentilesArgWithDebugInfo = {
13
+ viewport: {
14
+ width: number;
15
+ height: number;
16
+ };
9
17
  orderedEntries: ReadonlyArray<VCObserverEntry>;
10
- percentiles: number[];
18
+ startTime: DOMHighResTimeStamp;
19
+ stopTime: DOMHighResTimeStamp;
11
20
  };
21
+ export interface PercentileCalcResultItem {
22
+ time: number;
23
+ viewportPercentage: number;
24
+ entries: ViewportEntryData[];
25
+ }
26
+ /**
27
+ * Ordered by time
28
+ */
29
+ export type PercentileCalcResult = PercentileCalcResultItem[];
@@ -4,6 +4,8 @@ export type VCCalculatorParam = {
4
4
  startTime: DOMHighResTimeStamp;
5
5
  stopTime: DOMHighResTimeStamp;
6
6
  orderedEntries: ReadonlyArray<VCObserverEntry>;
7
+ interactionId?: string;
8
+ isPostInteraction: boolean;
7
9
  };
8
10
  export interface VCCalculator {
9
11
  calculate(param: VCCalculatorParam): Promise<RevisionPayloadEntry | undefined>;
@@ -1,21 +1,25 @@
1
1
  import type { ObservedWindowEvent } from './window-event-observer';
2
2
  export type VCObserverEntryType = 'mutation:child-element' | 'mutation:remount' | 'mutation:element' | 'mutation:element-replacement' | 'mutation:attribute:no-layout-shift' | 'mutation:attribute:non-visual-style' | 'mutation:attribute' | 'mutation:media' | 'layout-shift' | 'window:event' | 'unknown';
3
3
  export type ViewportEntryData = {
4
+ readonly type: VCObserverEntryType;
4
5
  readonly elementName: string;
5
6
  readonly rect: DOMRect;
6
7
  readonly previousRect?: DOMRect | undefined;
7
8
  readonly visible: boolean;
8
9
  readonly attributeName?: string | null | undefined;
10
+ readonly oldValue?: string | null | undefined;
11
+ readonly newValue?: string | null | undefined;
9
12
  };
10
13
  export type WindowEventEntryData = {
14
+ readonly type: VCObserverEntryType;
11
15
  readonly eventType: ObservedWindowEvent;
12
16
  };
13
17
  export type VCObserverEntry = {
14
18
  readonly time: DOMHighResTimeStamp;
15
- readonly type: VCObserverEntryType;
16
19
  readonly data: ViewportEntryData | WindowEventEntryData;
17
20
  };
18
21
  export type VCObserverGetVCResultParam = {
19
22
  start: number;
20
23
  stop: number;
24
+ interactionId?: string;
21
25
  };
@@ -2,6 +2,8 @@ export type CreateMutationObserverProps = {
2
2
  onAttributeMutation: (props: {
3
3
  target: HTMLElement;
4
4
  attributeName: string;
5
+ oldValue?: string | undefined | null;
6
+ newValue?: string | undefined | null;
5
7
  }) => void;
6
8
  onMutationFinished?: (props: {
7
9
  targets: Array<HTMLElement>;
@@ -3,6 +3,8 @@ export type MutationRecordWithTimestamp = MutationRecord & {
3
3
  };
4
4
  export type AttributeMutationData = {
5
5
  attributeName: string;
6
+ oldValue?: string | undefined | null;
7
+ newValue?: string | undefined | null;
6
8
  };
7
9
  /**
8
10
  * Add here when there are more type of mutation data
@@ -73,6 +73,7 @@ export type Config = {
73
73
  readonly selectorConfig?: SelectorConfig;
74
74
  readonly ssr?: boolean;
75
75
  readonly ssrWhitelist?: string[];
76
+ readonly ssrEnablePageLayoutPlaceholder?: boolean;
76
77
  readonly stopVCAtInteractionFinish?: boolean;
77
78
  /**
78
79
  * The revisions of TTVC that will be calculated
@@ -8,6 +8,7 @@ export type GetVCResultType = {
8
8
  ssr?: number;
9
9
  vc?: VCRawDataType | null;
10
10
  experienceKey: string;
11
+ interactionId?: string;
11
12
  };
12
13
  export type SelectorConfig = {
13
14
  id: boolean;
@@ -22,6 +23,7 @@ export type VCObserverOptions = {
22
23
  devToolsEnabled?: boolean | undefined;
23
24
  selectorConfig?: SelectorConfig | undefined;
24
25
  isPostInteraction?: boolean;
26
+ ssrEnablePageLayoutPlaceholder?: boolean;
25
27
  };
26
28
  export interface VCObserverInterface {
27
29
  start(startArg: {
@@ -0,0 +1,30 @@
1
+ import type { ComponentsLogType, VCEntryType } from '../../common/vc/types';
2
+ import type { VCObserverEntryType } from '../vc-observer-new/types';
3
+ interface VCRevisionDebugDetails {
4
+ revision: string;
5
+ isClean: boolean;
6
+ abortReason: string | null;
7
+ vcLogs: Array<{
8
+ time: number;
9
+ viewportPercentage: number;
10
+ entries: Array<{
11
+ elementName: string;
12
+ type: VCObserverEntryType;
13
+ rect: DOMRect;
14
+ visible: boolean;
15
+ attributeName?: string | null;
16
+ oldValue?: string | null;
17
+ newValue?: string | null;
18
+ }>;
19
+ }>;
20
+ interactionId?: string;
21
+ }
22
+ export declare function getVCRevisionDebugDetails({ revision, isClean, abortReason, VCEntries, componentsLog, interactionId, }: {
23
+ revision: string;
24
+ isClean: boolean;
25
+ abortReason: string | null;
26
+ VCEntries: VCEntryType[];
27
+ componentsLog: ComponentsLogType;
28
+ interactionId?: string;
29
+ }): VCRevisionDebugDetails;
30
+ export {};
@@ -51,7 +51,7 @@ export declare class VCObserver implements VCObserverInterface {
51
51
  targetName: string;
52
52
  ignoreReason: VCIgnoreReason | undefined;
53
53
  }[];
54
- getVCResult: ({ start, stop, tti, prefix, ssr, vc, isEventAborted, experienceKey, }: GetVCResultType) => Promise<VCResult>;
54
+ getVCResult: ({ start, stop, tti, prefix, ssr, vc, isEventAborted, experienceKey, interactionId, }: GetVCResultType) => Promise<VCResult>;
55
55
  static calculateVC({ heatmap, ssr, componentsLog, viewport, }: {
56
56
  heatmap: number[][];
57
57
  ssr?: number;
@@ -9,6 +9,9 @@ export type SelectorConfig = {
9
9
  };
10
10
  type ConstructorOptions = {
11
11
  selectorConfig: SelectorConfig;
12
+ SSRConfig?: {
13
+ enablePageLayoutPlaceholder: boolean;
14
+ };
12
15
  };
13
16
  export declare class Observers implements BrowserObservers {
14
17
  private intersectionObserver;
@@ -11,7 +11,10 @@ export declare class SSRPlaceholderHandlers {
11
11
  private reactValidateCallbacks;
12
12
  private intersectionObserver;
13
13
  private EQUALITY_THRESHOLD;
14
- constructor();
14
+ private enablePageLayoutPlaceholder;
15
+ constructor(enablePageLayoutPlaceholder?: boolean);
16
+ private getPlaceholderId;
17
+ private getPlaceholderReplacementId;
15
18
  clear(): void;
16
19
  isPlaceholder(element: HTMLElement): boolean;
17
20
  isPlaceholderReplacement(element: HTMLElement): boolean;
@@ -1 +1 @@
1
- export declare function collectSSRPlaceholderDimensions(document: Document, window: Window): void;
1
+ export declare function collectSSRPlaceholderDimensions(document: Document, window: Window, enablePageLayoutPlaceholder?: boolean): void;
@@ -3,12 +3,14 @@ import { type SelectorConfig } from './get-element-name';
3
3
  import type { VCObserverGetVCResultParam } from './types';
4
4
  export type VCObserverNewConfig = {
5
5
  selectorConfig?: SelectorConfig;
6
+ isPostInteraction?: boolean;
6
7
  };
7
8
  export default class VCObserverNew {
8
9
  private selectorConfig;
9
10
  private viewportObserver;
10
11
  private windowEventObserver;
11
12
  private entriesTimeline;
13
+ private isPostInteraction;
12
14
  constructor(config: VCObserverNewConfig);
13
15
  start({ startTime }: {
14
16
  startTime: DOMHighResTimeStamp;
@@ -10,5 +10,8 @@ export default abstract class AbstractVCCalculatorBase implements VCCalculator {
10
10
  isVCClean: boolean;
11
11
  dirtyReason?: VCAbortReason;
12
12
  };
13
- calculate({ startTime, stopTime, orderedEntries, }: VCCalculatorParam): Promise<RevisionPayloadEntry | undefined>;
13
+ private filterViewportEntries;
14
+ private calculateBasic;
15
+ private calculateWithDebugInfo;
16
+ calculate({ startTime, stopTime, orderedEntries, interactionId, isPostInteraction, }: VCCalculatorParam): Promise<RevisionPayloadEntry | undefined>;
14
17
  }
@@ -1,5 +1,9 @@
1
1
  import type { RevisionPayloadVCDetails } from '../../../../../common/vc/types';
2
- import type { CalcTTVCPercentilesArg } from '../types';
2
+ import type { ViewportEntryData } from '../../../types';
3
+ import type { CalcTTVCPercentilesArg, CalcTTVCPercentilesArgWithDebugInfo, PercentileCalcResult } from '../types';
3
4
  declare function calculateTTVCPercentiles({ viewport, orderedEntries, percentiles, startTime, }: CalcTTVCPercentilesArg): Promise<RevisionPayloadVCDetails>;
5
+ declare function calculateTTVCPercentilesWithDebugInfo({ viewport, orderedEntries, startTime, }: CalcTTVCPercentilesArgWithDebugInfo): Promise<PercentileCalcResult>;
4
6
  export default calculateTTVCPercentiles;
5
7
  export declare function calculatePercentiles(timePixelCounts: Map<DOMHighResTimeStamp, number>, elementMap: ReadonlyMap<DOMHighResTimeStamp, Set<string>>, unorderedPercentiles: number[], totalPixels: number, startTime: DOMHighResTimeStamp): RevisionPayloadVCDetails;
8
+ export declare function calculatePercentilesWithDebugInfo(timePixelCounts: Map<DOMHighResTimeStamp, number>, elementMap: ReadonlyMap<DOMHighResTimeStamp, ViewportEntryData[]>, totalPixels: number, startTime: DOMHighResTimeStamp): PercentileCalcResult;
9
+ export { calculateTTVCPercentilesWithDebugInfo };
@@ -1,4 +1,2 @@
1
- import type { RevisionPayloadVCDetails } from '../../../../common/vc/types';
2
- import type { CalcTTVCPercentilesArg } from './types';
3
- declare function calculateTTVCPercentiles(arg: CalcTTVCPercentilesArg): Promise<RevisionPayloadVCDetails | null>;
4
- export default calculateTTVCPercentiles;
1
+ export { default as calculateTTVCPercentiles } from './canvas-heatmap';
2
+ export { calculateTTVCPercentilesWithDebugInfo } from './canvas-heatmap';
@@ -1,11 +1,29 @@
1
- import type { VCObserverEntry } from '../../types';
1
+ import type { VCObserverEntry, ViewportEntryData } from '../../types';
2
2
  export type CalcTTVCPercentilesArg = {
3
3
  viewport: {
4
4
  width: number;
5
5
  height: number;
6
6
  };
7
+ orderedEntries: ReadonlyArray<VCObserverEntry>;
8
+ percentiles: number[];
7
9
  startTime: DOMHighResTimeStamp;
8
10
  stopTime: DOMHighResTimeStamp;
11
+ };
12
+ export type CalcTTVCPercentilesArgWithDebugInfo = {
13
+ viewport: {
14
+ width: number;
15
+ height: number;
16
+ };
9
17
  orderedEntries: ReadonlyArray<VCObserverEntry>;
10
- percentiles: number[];
18
+ startTime: DOMHighResTimeStamp;
19
+ stopTime: DOMHighResTimeStamp;
11
20
  };
21
+ export interface PercentileCalcResultItem {
22
+ time: number;
23
+ viewportPercentage: number;
24
+ entries: ViewportEntryData[];
25
+ }
26
+ /**
27
+ * Ordered by time
28
+ */
29
+ export type PercentileCalcResult = PercentileCalcResultItem[];
@@ -4,6 +4,8 @@ export type VCCalculatorParam = {
4
4
  startTime: DOMHighResTimeStamp;
5
5
  stopTime: DOMHighResTimeStamp;
6
6
  orderedEntries: ReadonlyArray<VCObserverEntry>;
7
+ interactionId?: string;
8
+ isPostInteraction: boolean;
7
9
  };
8
10
  export interface VCCalculator {
9
11
  calculate(param: VCCalculatorParam): Promise<RevisionPayloadEntry | undefined>;
@@ -1,21 +1,25 @@
1
1
  import type { ObservedWindowEvent } from './window-event-observer';
2
2
  export type VCObserverEntryType = 'mutation:child-element' | 'mutation:remount' | 'mutation:element' | 'mutation:element-replacement' | 'mutation:attribute:no-layout-shift' | 'mutation:attribute:non-visual-style' | 'mutation:attribute' | 'mutation:media' | 'layout-shift' | 'window:event' | 'unknown';
3
3
  export type ViewportEntryData = {
4
+ readonly type: VCObserverEntryType;
4
5
  readonly elementName: string;
5
6
  readonly rect: DOMRect;
6
7
  readonly previousRect?: DOMRect | undefined;
7
8
  readonly visible: boolean;
8
9
  readonly attributeName?: string | null | undefined;
10
+ readonly oldValue?: string | null | undefined;
11
+ readonly newValue?: string | null | undefined;
9
12
  };
10
13
  export type WindowEventEntryData = {
14
+ readonly type: VCObserverEntryType;
11
15
  readonly eventType: ObservedWindowEvent;
12
16
  };
13
17
  export type VCObserverEntry = {
14
18
  readonly time: DOMHighResTimeStamp;
15
- readonly type: VCObserverEntryType;
16
19
  readonly data: ViewportEntryData | WindowEventEntryData;
17
20
  };
18
21
  export type VCObserverGetVCResultParam = {
19
22
  start: number;
20
23
  stop: number;
24
+ interactionId?: string;
21
25
  };
@@ -2,6 +2,8 @@ export type CreateMutationObserverProps = {
2
2
  onAttributeMutation: (props: {
3
3
  target: HTMLElement;
4
4
  attributeName: string;
5
+ oldValue?: string | undefined | null;
6
+ newValue?: string | undefined | null;
5
7
  }) => void;
6
8
  onMutationFinished?: (props: {
7
9
  targets: Array<HTMLElement>;
@@ -3,6 +3,8 @@ export type MutationRecordWithTimestamp = MutationRecord & {
3
3
  };
4
4
  export type AttributeMutationData = {
5
5
  attributeName: string;
6
+ oldValue?: string | undefined | null;
7
+ newValue?: string | undefined | null;
6
8
  };
7
9
  /**
8
10
  * Add here when there are more type of mutation data
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/react-ufo",
3
- "version": "3.12.4",
3
+ "version": "3.13.0",
4
4
  "description": "Parts of React UFO that are publicly available",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -162,6 +162,9 @@
162
162
  },
163
163
  "platform_ufo_post_interaction_use_vc_rev": {
164
164
  "type": "boolean"
165
+ },
166
+ "platform_ufo_ttvc_v3_devtool": {
167
+ "type": "boolean"
165
168
  }
166
169
  }
167
170
  }