@atlaskit/react-ufo 5.2.9 → 5.2.10

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 (51) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/cjs/interaction-metrics/index.js +1 -0
  3. package/dist/cjs/interaction-metrics-init/index.js +2 -1
  4. package/dist/cjs/vc/index.js +4 -2
  5. package/dist/cjs/vc/vc-observer-new/index.js +10 -4
  6. package/dist/cjs/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +84 -29
  7. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/detect-layout-shift-cause.js +164 -0
  8. package/dist/cjs/vc/vc-observer-new/viewport-observer/index.js +173 -34
  9. package/dist/cjs/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +1 -1
  10. package/dist/cjs/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +2 -1
  11. package/dist/es2019/interaction-metrics/index.js +1 -0
  12. package/dist/es2019/interaction-metrics-init/index.js +2 -1
  13. package/dist/es2019/vc/index.js +4 -2
  14. package/dist/es2019/vc/vc-observer-new/index.js +10 -5
  15. package/dist/es2019/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +61 -7
  16. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/detect-layout-shift-cause.js +138 -0
  17. package/dist/es2019/vc/vc-observer-new/viewport-observer/index.js +145 -10
  18. package/dist/es2019/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +1 -1
  19. package/dist/es2019/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +2 -1
  20. package/dist/esm/interaction-metrics/index.js +1 -0
  21. package/dist/esm/interaction-metrics-init/index.js +2 -1
  22. package/dist/esm/vc/index.js +4 -2
  23. package/dist/esm/vc/vc-observer-new/index.js +10 -4
  24. package/dist/esm/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +84 -29
  25. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/detect-layout-shift-cause.js +158 -0
  26. package/dist/esm/vc/vc-observer-new/viewport-observer/index.js +173 -34
  27. package/dist/esm/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +1 -1
  28. package/dist/esm/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +2 -1
  29. package/dist/types/common/vc/types.d.ts +55 -0
  30. package/dist/types/config/index.d.ts +1 -0
  31. package/dist/types/vc/types.d.ts +2 -0
  32. package/dist/types/vc/vc-observer-new/index.d.ts +2 -0
  33. package/dist/types/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +1 -1
  34. package/dist/types/vc/vc-observer-new/metric-calculator/types.d.ts +1 -0
  35. package/dist/types/vc/vc-observer-new/metric-calculator/utils/detect-layout-shift-cause.d.ts +31 -0
  36. package/dist/types/vc/vc-observer-new/types.d.ts +2 -0
  37. package/dist/types/vc/vc-observer-new/viewport-observer/index.d.ts +3 -1
  38. package/dist/types/vc/vc-observer-new/viewport-observer/mutation-observer/index.d.ts +1 -0
  39. package/dist/types/vc/vc-observer-new/viewport-observer/types.d.ts +5 -2
  40. package/dist/types-ts4.5/common/vc/types.d.ts +55 -0
  41. package/dist/types-ts4.5/config/index.d.ts +1 -0
  42. package/dist/types-ts4.5/vc/types.d.ts +2 -0
  43. package/dist/types-ts4.5/vc/vc-observer-new/index.d.ts +2 -0
  44. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +1 -1
  45. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/types.d.ts +1 -0
  46. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/detect-layout-shift-cause.d.ts +31 -0
  47. package/dist/types-ts4.5/vc/vc-observer-new/types.d.ts +2 -0
  48. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/index.d.ts +3 -1
  49. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/mutation-observer/index.d.ts +1 -0
  50. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/types.d.ts +5 -2
  51. package/package.json +1 -1
@@ -10,6 +10,7 @@ export type VCObserverNewConfig = {
10
10
  enablePageLayoutPlaceholder?: boolean;
11
11
  };
12
12
  ssrPlaceholderHandler?: SSRPlaceholderHandlers | null;
13
+ trackLayoutShiftOffenders?: boolean;
13
14
  searchPageConfig?: SearchPageConfig;
14
15
  };
15
16
  declare const SSRState: {
@@ -31,6 +32,7 @@ export default class VCObserverNew {
31
32
  private windowEventObserver;
32
33
  private entriesTimeline;
33
34
  private isPostInteraction;
35
+ private trackLayoutShiftOffenders;
34
36
  private ssrPlaceholderHandler;
35
37
  private ssr;
36
38
  constructor(config: VCObserverNewConfig);
@@ -25,5 +25,5 @@ export default abstract class AbstractVCCalculatorBase implements VCCalculator {
25
25
  private calculateRatios;
26
26
  private getLabelStacks;
27
27
  private calculateWithDebugInfo;
28
- calculate({ startTime, stopTime, orderedEntries, interactionId, isPostInteraction, include3p, excludeSmartAnswersInSearch, includeSSRRatio, interactionType, isPageVisible, interactionAbortReason, }: VCCalculatorParam): Promise<RevisionPayloadEntry | undefined>;
28
+ calculate({ startTime, stopTime, orderedEntries, interactionId, isPostInteraction, include3p, excludeSmartAnswersInSearch, includeSSRRatio, interactionType, isPageVisible, interactionAbortReason, reportLayoutShiftOffenders, }: VCCalculatorParam): Promise<RevisionPayloadEntry | undefined>;
29
29
  }
@@ -13,6 +13,7 @@ export type VCCalculatorParam = {
13
13
  interactionType: InteractionType;
14
14
  isPageVisible: boolean;
15
15
  interactionAbortReason?: AbortReasonType;
16
+ reportLayoutShiftOffenders?: boolean;
16
17
  };
17
18
  export interface VCCalculator {
18
19
  calculate(param: VCCalculatorParam): Promise<RevisionPayloadEntry | undefined>;
@@ -0,0 +1,31 @@
1
+ import type { LayoutShiftOffender, LayoutShiftVariables } from '../../../../common/vc/types';
2
+ import type { VCObserverEntry, ViewportEntryData } from '../../types';
3
+ type DetectLayoutShiftCauseParams = {
4
+ /**
5
+ * All viewport observer entries, used to find potential offenders close to the layout-shift timestamp.
6
+ */
7
+ viewportEntries: ReadonlyArray<VCObserverEntry & {
8
+ data: ViewportEntryData;
9
+ }>;
10
+ /**
11
+ * The layout-shift entries that contributed to a VC checkpoint.
12
+ */
13
+ layoutShiftEntries: ReadonlyArray<ViewportEntryData>;
14
+ /**
15
+ * Timestamp of the VC checkpoint entry.
16
+ */
17
+ time: number;
18
+ /**
19
+ * Start time of the interaction; used to classify whether an offender happened before the VC checkpoint.
20
+ */
21
+ startTime: number;
22
+ /**
23
+ * Window around the checkpoint timestamp used to consider "nearby" offenders.
24
+ */
25
+ offenderWindowMs?: number;
26
+ };
27
+ export declare const detectLayoutShiftCause: ({ viewportEntries, layoutShiftEntries, time, startTime, offenderWindowMs, }: DetectLayoutShiftCauseParams) => {
28
+ layoutShiftVariables: LayoutShiftVariables;
29
+ layoutShiftOffenders: LayoutShiftOffender[];
30
+ };
31
+ export {};
@@ -11,6 +11,7 @@ export type ViewportEntryData = {
11
11
  readonly oldValue?: string | null | undefined;
12
12
  readonly newValue?: string | null | undefined;
13
13
  readonly labelStacks?: VCObserverLabelStacks;
14
+ readonly originalMutationTimestamp?: DOMHighResTimeStamp;
14
15
  };
15
16
  export type VCObserverLabelStacks = {
16
17
  segment: string;
@@ -39,4 +40,5 @@ export type VCObserverGetVCResultParam = {
39
40
  includeRawData?: boolean;
40
41
  includeSSRInV3?: boolean;
41
42
  rawDataStopTime?: number;
43
+ reportLayoutShiftOffenders?: boolean;
42
44
  };
@@ -13,6 +13,7 @@ export type ViewPortObserverConstructorArgs = {
13
13
  }): void;
14
14
  getSSRState?: () => any;
15
15
  getSSRPlaceholderHandler?: () => any;
16
+ trackLayoutShiftOffenders?: boolean;
16
17
  searchPageConfig?: SearchPageConfig;
17
18
  };
18
19
  export default class ViewportObserver {
@@ -23,10 +24,11 @@ export default class ViewportObserver {
23
24
  private mapIs3pResult;
24
25
  private onChange;
25
26
  private isStarted;
27
+ private trackLayoutShiftOffenders;
26
28
  private searchPageConfig;
27
29
  private getSSRState?;
28
30
  private getSSRPlaceholderHandler?;
29
- constructor({ onChange, getSSRState, getSSRPlaceholderHandler, searchPageConfig, }: ViewPortObserverConstructorArgs);
31
+ constructor({ onChange, getSSRState, getSSRPlaceholderHandler, trackLayoutShiftOffenders, searchPageConfig, }: ViewPortObserverConstructorArgs);
30
32
  private handleIntersectionEntry;
31
33
  private handleChildListMutation;
32
34
  private handleAttributeMutation;
@@ -4,6 +4,7 @@ export type CreateMutationObserverProps = {
4
4
  attributeName: string;
5
5
  oldValue?: string | undefined | null;
6
6
  newValue?: string | undefined | null;
7
+ timestamp: DOMHighResTimeStamp;
7
8
  }) => void;
8
9
  onMutationFinished?: (props: {
9
10
  targets: Array<HTMLElement>;
@@ -1,7 +1,10 @@
1
1
  export type MutationRecordWithTimestamp = MutationRecord & {
2
2
  timestamp?: number;
3
3
  };
4
- export type AttributeMutationData = {
4
+ export type MutationDataWithTimestamp = {
5
+ timestamp?: DOMHighResTimeStamp;
6
+ };
7
+ export type AttributeMutationData = MutationDataWithTimestamp & {
5
8
  attributeName: string;
6
9
  oldValue?: string | undefined | null;
7
10
  newValue?: string | undefined | null;
@@ -9,4 +12,4 @@ export type AttributeMutationData = {
9
12
  /**
10
13
  * Add here when there are more type of mutation data
11
14
  */
12
- export type MutationData = AttributeMutationData;
15
+ export type MutationData = AttributeMutationData | MutationDataWithTimestamp;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/react-ufo",
3
- "version": "5.2.9",
3
+ "version": "5.2.10",
4
4
  "description": "Parts of React UFO that are publicly available",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",