@atlaskit/react-ufo 3.12.3 → 3.12.5

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 (98) 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/create-post-interaction-log-payload/index.js +6 -7
  5. package/dist/cjs/interaction-metrics/post-interaction-log.js +3 -11
  6. package/dist/cjs/vc/index.js +4 -2
  7. package/dist/cjs/vc/vc-observer/getVCRevisionDebugDetails.js +41 -0
  8. package/dist/cjs/vc/vc-observer/index.js +59 -33
  9. package/dist/cjs/vc/vc-observer-new/index.js +13 -7
  10. package/dist/cjs/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +211 -36
  11. package/dist/cjs/vc/vc-observer-new/metric-calculator/fy25_03/index.js +4 -4
  12. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +94 -4
  13. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/test-with-debug-info.js +108 -0
  14. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +16 -57
  15. package/dist/cjs/vc/vc-observer-new/viewport-observer/index.js +15 -5
  16. package/dist/cjs/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +3 -1
  17. package/dist/es2019/create-experimental-interaction-metrics-payload/index.js +2 -1
  18. package/dist/es2019/create-payload/utils/get-vc-metrics.js +1 -0
  19. package/dist/es2019/create-post-interaction-log-payload/index.js +6 -7
  20. package/dist/es2019/interaction-metrics/post-interaction-log.js +4 -13
  21. package/dist/es2019/vc/index.js +4 -2
  22. package/dist/es2019/vc/vc-observer/getVCRevisionDebugDetails.js +32 -0
  23. package/dist/es2019/vc/vc-observer/index.js +30 -1
  24. package/dist/es2019/vc/vc-observer-new/index.js +12 -6
  25. package/dist/es2019/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +115 -17
  26. package/dist/es2019/vc/vc-observer-new/metric-calculator/fy25_03/index.js +4 -4
  27. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +44 -1
  28. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/test-with-debug-info.js +75 -0
  29. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +2 -20
  30. package/dist/es2019/vc/vc-observer-new/viewport-observer/index.js +15 -5
  31. package/dist/es2019/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +3 -1
  32. package/dist/esm/create-experimental-interaction-metrics-payload/index.js +2 -1
  33. package/dist/esm/create-payload/utils/get-vc-metrics.js +2 -1
  34. package/dist/esm/create-post-interaction-log-payload/index.js +6 -7
  35. package/dist/esm/interaction-metrics/post-interaction-log.js +3 -11
  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 +59 -33
  39. package/dist/esm/vc/vc-observer-new/index.js +13 -7
  40. package/dist/esm/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +211 -36
  41. package/dist/esm/vc/vc-observer-new/metric-calculator/fy25_03/index.js +4 -4
  42. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +94 -5
  43. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/test-with-debug-info.js +106 -0
  44. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +2 -55
  45. package/dist/esm/vc/vc-observer-new/viewport-observer/index.js +15 -5
  46. package/dist/esm/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +3 -1
  47. package/dist/types/vc/types.d.ts +1 -0
  48. package/dist/types/vc/vc-observer/getVCRevisionDebugDetails.d.ts +30 -0
  49. package/dist/types/vc/vc-observer/index.d.ts +1 -1
  50. package/dist/types/vc/vc-observer-new/index.d.ts +2 -0
  51. package/dist/types/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +4 -1
  52. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts +5 -1
  53. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/test-with-debug-info.d.ts +1 -0
  54. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/index.d.ts +2 -4
  55. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/types.d.ts +20 -2
  56. package/dist/types/vc/vc-observer-new/metric-calculator/types.d.ts +2 -0
  57. package/dist/types/vc/vc-observer-new/types.d.ts +5 -1
  58. package/dist/types/vc/vc-observer-new/viewport-observer/mutation-observer/index.d.ts +2 -0
  59. package/dist/types/vc/vc-observer-new/viewport-observer/types.d.ts +2 -0
  60. package/dist/types-ts4.5/vc/types.d.ts +1 -0
  61. package/dist/types-ts4.5/vc/vc-observer/getVCRevisionDebugDetails.d.ts +30 -0
  62. package/dist/types-ts4.5/vc/vc-observer/index.d.ts +1 -1
  63. package/dist/types-ts4.5/vc/vc-observer-new/index.d.ts +2 -0
  64. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +4 -1
  65. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts +5 -1
  66. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/test-with-debug-info.d.ts +1 -0
  67. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/index.d.ts +2 -4
  68. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/types.d.ts +20 -2
  69. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/types.d.ts +2 -0
  70. package/dist/types-ts4.5/vc/vc-observer-new/types.d.ts +5 -1
  71. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/mutation-observer/index.d.ts +2 -0
  72. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/types.d.ts +2 -0
  73. package/package.json +4 -4
  74. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +0 -367
  75. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +0 -398
  76. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +0 -5
  77. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +0 -152
  78. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +0 -108
  79. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +0 -248
  80. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +0 -263
  81. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +0 -1
  82. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +0 -99
  83. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +0 -60
  84. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +0 -361
  85. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +0 -391
  86. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +0 -1
  87. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +0 -145
  88. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +0 -101
  89. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.d.ts +0 -39
  90. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts +0 -10
  91. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.d.ts +0 -43
  92. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.d.ts +0 -12
  93. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.d.ts +0 -25
  94. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.d.ts +0 -39
  95. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts +0 -10
  96. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.d.ts +0 -43
  97. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.d.ts +0 -12
  98. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.d.ts +0 -25
@@ -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;
@@ -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;
@@ -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
@@ -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;
@@ -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;
@@ -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.3",
3
+ "version": "3.12.5",
4
4
  "description": "Parts of React UFO that are publicly available",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -130,9 +130,6 @@
130
130
  "platform_ufo_use_offscreen_canvas": {
131
131
  "type": "boolean"
132
132
  },
133
- "platform_ufo_vc_align_revisions_on_watchdog_event": {
134
- "type": "boolean"
135
- },
136
133
  "platform_ufo_canvas_heatmap_full_precision": {
137
134
  "type": "boolean"
138
135
  },
@@ -165,6 +162,9 @@
165
162
  },
166
163
  "platform_ufo_post_interaction_use_vc_rev": {
167
164
  "type": "boolean"
165
+ },
166
+ "platform_ufo_ttvc_v3_devtool": {
167
+ "type": "boolean"
168
168
  }
169
169
  }
170
170
  }