@atlaskit/react-ufo 3.1.4 → 3.3.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.
- package/CHANGELOG.md +16 -0
- package/README.md +11 -0
- package/dist/cjs/create-experimental-interaction-metrics-payload/index.js +52 -25
- package/dist/cjs/create-payload/index.js +290 -231
- package/dist/cjs/interaction-metrics/index.js +61 -23
- package/dist/cjs/interaction-metrics/post-interaction-log.js +63 -34
- package/dist/cjs/interaction-metrics-init/index.js +26 -7
- package/dist/cjs/segment/schedule-on-paint.js +35 -0
- package/dist/cjs/segment/segment.js +10 -1
- package/dist/cjs/vc/index.js +105 -1
- package/dist/cjs/vc/types.js +5 -0
- package/dist/cjs/vc/vc-observer/index.js +198 -208
- package/dist/cjs/vc/vc-observer-new/entries-timeline/index.js +56 -0
- package/dist/cjs/vc/vc-observer-new/get-element-name.js +68 -0
- package/dist/cjs/vc/vc-observer-new/index.js +132 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +75 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/fy25_03/index.js +60 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +274 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +151 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +367 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +397 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +5 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +61 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +151 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +107 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/types.js +5 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/types.js +5 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.js +16 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.js +16 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.js +16 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/task-yield.js +45 -0
- package/dist/cjs/vc/vc-observer-new/types.js +5 -0
- package/dist/cjs/vc/vc-observer-new/viewport-observer/index.js +195 -0
- package/dist/cjs/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +71 -0
- package/dist/cjs/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +65 -0
- package/dist/cjs/vc/vc-observer-new/viewport-observer/performance-observer/index.js +58 -0
- package/dist/cjs/vc/vc-observer-new/viewport-observer/types.js +1 -0
- package/dist/cjs/vc/vc-observer-new/window-event-observer/index.js +54 -0
- package/dist/es2019/create-experimental-interaction-metrics-payload/index.js +2 -2
- package/dist/es2019/create-payload/index.js +8 -7
- package/dist/es2019/interaction-metrics/index.js +3 -3
- package/dist/es2019/interaction-metrics/post-interaction-log.js +5 -5
- package/dist/es2019/interaction-metrics-init/index.js +26 -7
- package/dist/es2019/segment/schedule-on-paint.js +29 -0
- package/dist/es2019/segment/segment.js +9 -1
- package/dist/es2019/vc/index.js +56 -1
- package/dist/es2019/vc/types.js +1 -0
- package/dist/es2019/vc/vc-observer/index.js +1 -4
- package/dist/es2019/vc/vc-observer-new/entries-timeline/index.js +34 -0
- package/dist/es2019/vc/vc-observer-new/get-element-name.js +62 -0
- package/dist/es2019/vc/vc-observer-new/index.js +98 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +38 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/fy25_03/index.js +39 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +194 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +69 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +248 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +261 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +1 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +19 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +98 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +58 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/types.js +1 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/types.js +1 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.js +9 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.js +9 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.js +10 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/task-yield.js +17 -0
- package/dist/es2019/vc/vc-observer-new/types.js +1 -0
- package/dist/es2019/vc/vc-observer-new/viewport-observer/index.js +168 -0
- package/dist/es2019/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +65 -0
- package/dist/es2019/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +48 -0
- package/dist/es2019/vc/vc-observer-new/viewport-observer/performance-observer/index.js +41 -0
- package/dist/es2019/vc/vc-observer-new/viewport-observer/types.js +0 -0
- package/dist/es2019/vc/vc-observer-new/window-event-observer/index.js +36 -0
- package/dist/esm/create-experimental-interaction-metrics-payload/index.js +52 -25
- package/dist/esm/create-payload/index.js +290 -231
- package/dist/esm/interaction-metrics/index.js +61 -23
- package/dist/esm/interaction-metrics/post-interaction-log.js +63 -34
- package/dist/esm/interaction-metrics-init/index.js +26 -7
- package/dist/esm/segment/schedule-on-paint.js +29 -0
- package/dist/esm/segment/segment.js +10 -1
- package/dist/esm/vc/index.js +104 -1
- package/dist/esm/vc/types.js +1 -0
- package/dist/esm/vc/vc-observer/index.js +198 -208
- package/dist/esm/vc/vc-observer-new/entries-timeline/index.js +50 -0
- package/dist/esm/vc/vc-observer-new/get-element-name.js +62 -0
- package/dist/esm/vc/vc-observer-new/index.js +126 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +69 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/fy25_03/index.js +54 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +268 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +143 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +361 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +390 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +1 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +54 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +144 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +100 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/types.js +1 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/types.js +1 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.js +10 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.js +10 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.js +10 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/utils/task-yield.js +38 -0
- package/dist/esm/vc/vc-observer-new/types.js +1 -0
- package/dist/esm/vc/vc-observer-new/viewport-observer/index.js +189 -0
- package/dist/esm/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +65 -0
- package/dist/esm/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +59 -0
- package/dist/esm/vc/vc-observer-new/viewport-observer/performance-observer/index.js +51 -0
- package/dist/esm/vc/vc-observer-new/viewport-observer/types.js +0 -0
- package/dist/esm/vc/vc-observer-new/window-event-observer/index.js +48 -0
- package/dist/types/common/index.d.ts +1 -0
- package/dist/types/create-experimental-interaction-metrics-payload/index.d.ts +3 -2
- package/dist/types/create-payload/index.d.ts +4 -4
- package/dist/types/interaction-metrics/post-interaction-log.d.ts +3 -2
- package/dist/types/segment/schedule-on-paint.d.ts +2 -0
- package/dist/types/vc/index.d.ts +3 -3
- package/dist/types/vc/types.d.ts +34 -0
- package/dist/types/vc/vc-observer/index.d.ts +5 -21
- package/dist/types/vc/vc-observer-new/entries-timeline/index.d.ts +13 -0
- package/dist/types/vc/vc-observer-new/get-element-name.d.ts +8 -0
- package/dist/types/vc/vc-observer-new/index.d.ts +18 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +9 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/fy25_03/index.d.ts +7 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.d.ts +91 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts +4 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.d.ts +39 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts +8 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.d.ts +43 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/index.d.ts +3 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.d.ts +11 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.d.ts +23 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/types.d.ts +9 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/types.d.ts +20 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.d.ts +1 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.d.ts +1 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.d.ts +2 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/utils/task-yield.d.ts +1 -0
- package/dist/types/vc/vc-observer-new/types.d.ts +21 -0
- package/dist/types/vc/vc-observer-new/viewport-observer/index.d.ts +22 -0
- package/dist/types/vc/vc-observer-new/viewport-observer/intersection-observer/index.d.ts +30 -0
- package/dist/types/vc/vc-observer-new/viewport-observer/mutation-observer/index.d.ts +14 -0
- package/dist/types/vc/vc-observer-new/viewport-observer/performance-observer/index.d.ts +14 -0
- package/dist/types/vc/vc-observer-new/viewport-observer/types.d.ts +10 -0
- package/dist/types/vc/vc-observer-new/window-event-observer/index.d.ts +17 -0
- package/dist/types-ts4.5/common/index.d.ts +1 -0
- package/dist/types-ts4.5/create-experimental-interaction-metrics-payload/index.d.ts +3 -2
- package/dist/types-ts4.5/create-payload/index.d.ts +4 -4
- package/dist/types-ts4.5/interaction-metrics/post-interaction-log.d.ts +3 -2
- package/dist/types-ts4.5/segment/schedule-on-paint.d.ts +2 -0
- package/dist/types-ts4.5/vc/index.d.ts +3 -3
- package/dist/types-ts4.5/vc/types.d.ts +34 -0
- package/dist/types-ts4.5/vc/vc-observer/index.d.ts +5 -21
- package/dist/types-ts4.5/vc/vc-observer-new/entries-timeline/index.d.ts +13 -0
- package/dist/types-ts4.5/vc/vc-observer-new/get-element-name.d.ts +8 -0
- package/dist/types-ts4.5/vc/vc-observer-new/index.d.ts +18 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +9 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/fy25_03/index.d.ts +7 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.d.ts +91 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts +4 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.d.ts +39 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts +8 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.d.ts +43 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/index.d.ts +3 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.d.ts +11 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.d.ts +23 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/types.d.ts +9 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/types.d.ts +20 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.d.ts +1 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.d.ts +1 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.d.ts +2 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/task-yield.d.ts +1 -0
- package/dist/types-ts4.5/vc/vc-observer-new/types.d.ts +21 -0
- package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/index.d.ts +22 -0
- package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/intersection-observer/index.d.ts +30 -0
- package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/mutation-observer/index.d.ts +14 -0
- package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/performance-observer/index.d.ts +14 -0
- package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/types.d.ts +10 -0
- package/dist/types-ts4.5/vc/vc-observer-new/window-event-observer/index.d.ts +17 -0
- package/package.json +13 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { VCObserverEntry } from '../types';
|
|
2
|
+
export default class EntriesTimeline {
|
|
3
|
+
private unorderedEntries;
|
|
4
|
+
private sortedEntriesCache;
|
|
5
|
+
constructor();
|
|
6
|
+
push(entry: VCObserverEntry): void;
|
|
7
|
+
private getCacheKey;
|
|
8
|
+
getOrderedEntries({ start, stop, }: {
|
|
9
|
+
start?: DOMHighResTimeStamp | null;
|
|
10
|
+
stop?: DOMHighResTimeStamp | null;
|
|
11
|
+
}): ReadonlyArray<VCObserverEntry>;
|
|
12
|
+
clear(): void;
|
|
13
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type SelectorConfig } from './get-element-name';
|
|
2
|
+
import type { RevisionPayloadEntry } from './metric-calculator/types';
|
|
3
|
+
import type { VCObserverGetVCResultParam } from './types';
|
|
4
|
+
export type VCObserverNewConfig = {
|
|
5
|
+
selectorConfig?: SelectorConfig;
|
|
6
|
+
};
|
|
7
|
+
export default class VCObserverNew {
|
|
8
|
+
startTime: number;
|
|
9
|
+
private selectorConfig;
|
|
10
|
+
private viewportObserver;
|
|
11
|
+
private windowEventObserver;
|
|
12
|
+
private entriesTimeline;
|
|
13
|
+
constructor(config: VCObserverNewConfig);
|
|
14
|
+
start(): void;
|
|
15
|
+
stop(): void;
|
|
16
|
+
getVCResult(param: VCObserverGetVCResultParam): Promise<RevisionPayloadEntry[]>;
|
|
17
|
+
private getElementName;
|
|
18
|
+
}
|
package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { VCObserverEntry } from '../types';
|
|
2
|
+
import type { RevisionPayloadEntry, VCCalculator, VCCalculatorParam } from './types';
|
|
3
|
+
export default abstract class AbstractVCCalculatorBase implements VCCalculator {
|
|
4
|
+
private revisionNo;
|
|
5
|
+
constructor(revisionNo: string);
|
|
6
|
+
protected abstract isEntryIncluded(entry: VCObserverEntry): boolean;
|
|
7
|
+
protected abstract isVCClean(filteredEntries: ReadonlyArray<VCObserverEntry>): boolean;
|
|
8
|
+
calculate({ orderedEntries, }: VCCalculatorParam): Promise<RevisionPayloadEntry | undefined>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { VCObserverEntry } from '../../types';
|
|
2
|
+
import AbstractVCCalculatorBase from '../abstract-base-vc-calculator';
|
|
3
|
+
export default class VCCalculator_FY25_03 extends AbstractVCCalculatorBase {
|
|
4
|
+
constructor();
|
|
5
|
+
protected isEntryIncluded(entry: VCObserverEntry): boolean;
|
|
6
|
+
protected isVCClean(filteredEntries: readonly VCObserverEntry[]): boolean;
|
|
7
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
type RGBColor = `rgb(${number}, ${number}, ${number})`;
|
|
2
|
+
type Viewport = {
|
|
3
|
+
width: number;
|
|
4
|
+
height: number;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Class responsible for managing a scaled canvas and tracking pixel drawing operations.
|
|
8
|
+
* It uses an OffscreenCanvas for better performance and maintains a mapping between
|
|
9
|
+
* colors and timestamps for pixel counting purposes.
|
|
10
|
+
*/
|
|
11
|
+
export declare class ViewportCanvas {
|
|
12
|
+
/** The underlying OffscreenCanvas instance */
|
|
13
|
+
private readonly canvas;
|
|
14
|
+
/** The 2D rendering context of the canvas */
|
|
15
|
+
private readonly ctx;
|
|
16
|
+
/** Scale factor applied to the canvas (affects final pixel counts) */
|
|
17
|
+
private readonly scaleFactor;
|
|
18
|
+
/** Maps unique colors to their corresponding timestamps */
|
|
19
|
+
private readonly colorTimeMap;
|
|
20
|
+
/** Counter used to generate unique colors */
|
|
21
|
+
private colorCounter;
|
|
22
|
+
private scaledWidth;
|
|
23
|
+
private scaledHeight;
|
|
24
|
+
private scaleX;
|
|
25
|
+
private scaleY;
|
|
26
|
+
/**
|
|
27
|
+
* Creates a new ViewportCanvas instance.
|
|
28
|
+
* @param viewport - The dimensions of the viewport
|
|
29
|
+
* @param scaleFactor - Scale factor to apply to the canvas (default: 0.5)
|
|
30
|
+
* @throws {Error} If canvas context cannot be obtained
|
|
31
|
+
*/
|
|
32
|
+
constructor(viewport: Viewport, scaleFactor?: number);
|
|
33
|
+
getScaledDimensions(): {
|
|
34
|
+
width: number;
|
|
35
|
+
height: number;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Clears the entire canvas by removing all drawn content.
|
|
39
|
+
* @private
|
|
40
|
+
*/
|
|
41
|
+
private clear;
|
|
42
|
+
/**
|
|
43
|
+
* Generates a unique RGB color from an incrementing counter.
|
|
44
|
+
* Uses a 24-bit color space (16,777,216 possible colors).
|
|
45
|
+
*
|
|
46
|
+
* @private
|
|
47
|
+
* @returns A unique RGB color string
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* // Example bit operations for color 0x00FF8040:
|
|
51
|
+
* // Red: (0x00FF8040 >> 16) & 0xFF = 0xFF = 255
|
|
52
|
+
* // Green: (0x00FF8040 >> 8) & 0xFF = 0x80 = 128
|
|
53
|
+
* // Blue: 0x00FF8040 & 0xFF = 0x40 = 64
|
|
54
|
+
*/
|
|
55
|
+
private generateColor;
|
|
56
|
+
/**
|
|
57
|
+
* Draws a rectangle on the canvas with a unique color and associates it with a timestamp.
|
|
58
|
+
* Each drawn rectangle gets a unique color which is mapped to the provided timestamp.
|
|
59
|
+
*
|
|
60
|
+
* @param rect - The rectangle dimensions to draw
|
|
61
|
+
* @param timestamp - The timestamp to associate with this drawing operation
|
|
62
|
+
*/
|
|
63
|
+
drawRect(rect: DOMRect, timestamp: DOMHighResTimeStamp): void;
|
|
64
|
+
/**
|
|
65
|
+
* Calculates the number of pixels drawn for each timestamp.
|
|
66
|
+
* This method:
|
|
67
|
+
* 1. Reads the pixel data from the canvas
|
|
68
|
+
* 2. Counts pixels of each unique color
|
|
69
|
+
* 3. Maps colors back to their timestamps
|
|
70
|
+
* 4. Adjusts counts based on the scale factor
|
|
71
|
+
*
|
|
72
|
+
* @returns A Map containing timestamp to pixel count mappings
|
|
73
|
+
*/
|
|
74
|
+
getPixelCounts(): Promise<Map<DOMHighResTimeStamp, number>>;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Converts a number into RGB components in such a way that they can be recombined
|
|
78
|
+
* to form the original number using bitwise operations.
|
|
79
|
+
* @param number - The input number to be split into RGB components.
|
|
80
|
+
* @returns The RGB color string in the format "rgb(r, g, b)".
|
|
81
|
+
*/
|
|
82
|
+
export declare function getRGBComponents(n: number): RGBColor;
|
|
83
|
+
/**
|
|
84
|
+
* Calculates the number of pixels drawn for each color in the image data.
|
|
85
|
+
* @param imageData - The image data to analyze.
|
|
86
|
+
* @param scaleFactor - The scale factor applied to the canvas.
|
|
87
|
+
* @param arraySize - The amount of timestamps that were drawn in the viewport
|
|
88
|
+
* @returns A Map containing color to pixel count mappings.
|
|
89
|
+
*/
|
|
90
|
+
export declare function calculateDrawnPixelsRaw(imageData: ImageData, scaleFactor: number, arraySize: number): Promise<Uint32Array>;
|
|
91
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { RevisionPayloadVCDetails } from '../../types';
|
|
2
|
+
import type { CalcTTVCPercentilesArg } from '../types';
|
|
3
|
+
export default function calculateTTVCPercentiles({ viewport, orderedEntries, percentiles, }: CalcTTVCPercentilesArg): Promise<RevisionPayloadVCDetails>;
|
|
4
|
+
export declare function calculatePercentiles(timePixelCounts: Map<DOMHighResTimeStamp, number>, elementMap: ReadonlyMap<DOMHighResTimeStamp, Set<string>>, unorderedPercentiles: number[], totalPixels: number): RevisionPayloadVCDetails;
|
package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { VCObserverEntry } from '../../../types';
|
|
2
|
+
import { HeatmapCheckpointMetrics, HeatmapEntry, HeatmapOptions } from './types';
|
|
3
|
+
export default class Heatmap {
|
|
4
|
+
private viewport;
|
|
5
|
+
/**
|
|
6
|
+
* Heatmap Width
|
|
7
|
+
*/
|
|
8
|
+
private width;
|
|
9
|
+
/**
|
|
10
|
+
* Heatmap Height
|
|
11
|
+
*/
|
|
12
|
+
private height;
|
|
13
|
+
/**
|
|
14
|
+
* Heatmap Area (width * height)
|
|
15
|
+
*/
|
|
16
|
+
private heatmapAreaSize;
|
|
17
|
+
private scaleX;
|
|
18
|
+
private scaleY;
|
|
19
|
+
private map;
|
|
20
|
+
constructor({ viewport, heatmapSize }: HeatmapOptions);
|
|
21
|
+
getHeatmap(): HeatmapEntry[][];
|
|
22
|
+
private getCell;
|
|
23
|
+
/**
|
|
24
|
+
* Map Dom Rect to Heatmap Rect, rounded up to occupy full cell.
|
|
25
|
+
* @param rect DOM Rect
|
|
26
|
+
* @returns
|
|
27
|
+
*/
|
|
28
|
+
private mapDOMRectToHeatmap;
|
|
29
|
+
/**
|
|
30
|
+
* Calculate the ratio of a HeatmapRect compared to the full heatmap
|
|
31
|
+
*
|
|
32
|
+
* This function determines what fraction of the heatmap is covered by the given heatmap rectangle.
|
|
33
|
+
*
|
|
34
|
+
* @param rect
|
|
35
|
+
*/
|
|
36
|
+
private getRatio;
|
|
37
|
+
applyEntriesToHeatmap(entries: ReadonlyArray<VCObserverEntry>): Promise<void>;
|
|
38
|
+
getVCPercentMetrics(vcPercentCheckpoint: number[]): Promise<HeatmapCheckpointMetrics>;
|
|
39
|
+
}
|
package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { VCObserverEntry } from '../../../types';
|
|
2
|
+
import type { RevisionPayloadVCDetails } from '../../types';
|
|
3
|
+
import type { Viewport } from './types';
|
|
4
|
+
export default function calculateTTVCPercentiles({ orderedEntries, viewport, percentiles, }: {
|
|
5
|
+
orderedEntries: ReadonlyArray<VCObserverEntry>;
|
|
6
|
+
viewport: Viewport;
|
|
7
|
+
percentiles: number[];
|
|
8
|
+
}): Promise<RevisionPayloadVCDetails>;
|
package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { VCObserverEntryType } from '../../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Represents a rectangular area in the heatmap.
|
|
4
|
+
*/
|
|
5
|
+
export type HeatmapRect = {
|
|
6
|
+
left: number;
|
|
7
|
+
top: number;
|
|
8
|
+
right: number;
|
|
9
|
+
bottom: number;
|
|
10
|
+
};
|
|
11
|
+
export type HeatmapSource = VCObserverEntryType | 'mutation:parent-mounted' | 'mutation:node-replacement';
|
|
12
|
+
export type HeatmapEntryData = {
|
|
13
|
+
time: DOMHighResTimeStamp;
|
|
14
|
+
elementName: string | null;
|
|
15
|
+
rect: HeatmapRect | null;
|
|
16
|
+
source: HeatmapSource | null;
|
|
17
|
+
ratio: number | null;
|
|
18
|
+
};
|
|
19
|
+
export type HeatmapEntry = {
|
|
20
|
+
head: HeatmapEntryData | null;
|
|
21
|
+
previousEntries: Array<HeatmapEntryData>;
|
|
22
|
+
};
|
|
23
|
+
export type Viewport = {
|
|
24
|
+
width: number;
|
|
25
|
+
height: number;
|
|
26
|
+
};
|
|
27
|
+
export type HeatmapOptions = {
|
|
28
|
+
viewport: Viewport;
|
|
29
|
+
heatmapSize: number;
|
|
30
|
+
};
|
|
31
|
+
export type DOMSelector = string;
|
|
32
|
+
export type HeatmapCheckpointMetrics = {
|
|
33
|
+
[checkpoint: string]: {
|
|
34
|
+
/**
|
|
35
|
+
* Time when this checkpoint reached
|
|
36
|
+
*/
|
|
37
|
+
t: DOMHighResTimeStamp;
|
|
38
|
+
/**
|
|
39
|
+
* A collection of DOM Selector that are part of the checkpoint
|
|
40
|
+
*/
|
|
41
|
+
e: DOMSelector[];
|
|
42
|
+
};
|
|
43
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculate the union areas of all rectangles using Sweep Line Algorithm
|
|
3
|
+
*
|
|
4
|
+
* Reference:
|
|
5
|
+
* https://en.wikipedia.org/wiki/Sweep_line_algorithm
|
|
6
|
+
* https://www.hackerearth.com/practice/math/geometry/line-sweep-technique/tutorial/#:~:text=A%20sweep%20line%20is%20an,order%20to%20discretize%20the%20sweep.
|
|
7
|
+
*
|
|
8
|
+
* @param rectangles
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
11
|
+
export default function calculateUnionArea(rectangles: DOMRect[]): number;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { VCObserverEntry } from '../../../types';
|
|
2
|
+
export type DOMSelector = string;
|
|
3
|
+
export type Viewport = {
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
};
|
|
7
|
+
export type CheckpointMetrics = {
|
|
8
|
+
[checkpoint: string]: {
|
|
9
|
+
/**
|
|
10
|
+
* Time when this checkpoint reached
|
|
11
|
+
*/
|
|
12
|
+
t: DOMHighResTimeStamp;
|
|
13
|
+
/**
|
|
14
|
+
* A collection of DOM Selector that are part of the checkpoint
|
|
15
|
+
*/
|
|
16
|
+
e: DOMSelector[];
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
export default function calculateTTVCPercentiles({ orderedEntries, viewport, percentiles, }: {
|
|
20
|
+
orderedEntries: ReadonlyArray<VCObserverEntry>;
|
|
21
|
+
viewport: Viewport;
|
|
22
|
+
percentiles: number[];
|
|
23
|
+
}): Promise<CheckpointMetrics>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { VCObserverEntry } from '../types';
|
|
2
|
+
export type RevisionPayloadVCDetails = {
|
|
3
|
+
[key: string]: {
|
|
4
|
+
t: number;
|
|
5
|
+
e: string[];
|
|
6
|
+
};
|
|
7
|
+
};
|
|
8
|
+
export type RevisionPayloadEntry = {
|
|
9
|
+
'metric:vc90': number | null;
|
|
10
|
+
revision: string;
|
|
11
|
+
clean: boolean;
|
|
12
|
+
vcDetails?: RevisionPayloadVCDetails;
|
|
13
|
+
};
|
|
14
|
+
export type RevisionPayload = RevisionPayloadEntry[];
|
|
15
|
+
export type VCCalculatorParam = {
|
|
16
|
+
orderedEntries: ReadonlyArray<VCObserverEntry>;
|
|
17
|
+
};
|
|
18
|
+
export interface VCCalculator {
|
|
19
|
+
calculate(param: VCCalculatorParam): Promise<RevisionPayloadEntry | undefined>;
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function getViewportHeight(document?: Document): number;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function getViewportWidth(document?: Document): number;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function taskYield(): Promise<void>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ObservedWindowEvent } from './window-event-observer';
|
|
2
|
+
export type VCObserverEntryType = 'mutation:child-element' | 'mutation:remount' | 'mutation:element' | 'mutation:element-replacement' | 'mutation:attribute:no-layout-shift' | 'mutation:attribute' | 'mutation:media' | 'layout-shift' | 'window:event' | 'unknown';
|
|
3
|
+
export type ViewportEntryData = {
|
|
4
|
+
readonly elementName: string;
|
|
5
|
+
readonly rect: DOMRect;
|
|
6
|
+
readonly previousRect?: DOMRect | undefined;
|
|
7
|
+
readonly visible: boolean;
|
|
8
|
+
readonly attributeName?: string | null | undefined;
|
|
9
|
+
};
|
|
10
|
+
export type WindowEventEntryData = {
|
|
11
|
+
readonly eventType: ObservedWindowEvent;
|
|
12
|
+
};
|
|
13
|
+
export type VCObserverEntry = {
|
|
14
|
+
readonly time: DOMHighResTimeStamp;
|
|
15
|
+
readonly type: VCObserverEntryType;
|
|
16
|
+
readonly data: ViewportEntryData | WindowEventEntryData;
|
|
17
|
+
};
|
|
18
|
+
export type VCObserverGetVCResultParam = {
|
|
19
|
+
start: number;
|
|
20
|
+
stop: number;
|
|
21
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type VCObserverEntryType } from '../types';
|
|
2
|
+
import { type MutationData } from './types';
|
|
3
|
+
export type ViewPortObserverConstructorArgs = {
|
|
4
|
+
onChange(onChangeArgs: {
|
|
5
|
+
readonly time: DOMHighResTimeStamp;
|
|
6
|
+
readonly type: VCObserverEntryType;
|
|
7
|
+
readonly elementRef: WeakRef<HTMLElement>;
|
|
8
|
+
readonly visible: boolean;
|
|
9
|
+
readonly rect: DOMRectReadOnly;
|
|
10
|
+
readonly previousRect: DOMRectReadOnly | undefined;
|
|
11
|
+
readonly mutationData?: MutationData | undefined | null;
|
|
12
|
+
}): void;
|
|
13
|
+
};
|
|
14
|
+
export default class ViewportObserver {
|
|
15
|
+
private intersectionObserver;
|
|
16
|
+
private mutationObserver;
|
|
17
|
+
private performanceObserver;
|
|
18
|
+
private mapVisibleNodeRects;
|
|
19
|
+
constructor({ onChange }: ViewPortObserverConstructorArgs);
|
|
20
|
+
start(): void;
|
|
21
|
+
stop(): void;
|
|
22
|
+
}
|
package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/intersection-observer/index.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { VCObserverEntryType } from '../../types';
|
|
2
|
+
import type { MutationData } from '../types';
|
|
3
|
+
type TagCallback = (props: {
|
|
4
|
+
target: HTMLElement;
|
|
5
|
+
rect: DOMRectReadOnly;
|
|
6
|
+
}) => VCObserverEntryType | undefined | null | {
|
|
7
|
+
type: VCObserverEntryType;
|
|
8
|
+
mutationData: MutationData;
|
|
9
|
+
};
|
|
10
|
+
type ObserveArg_TagOrCallback = VCObserverEntryType | TagCallback;
|
|
11
|
+
export interface VCIntersectionObserver {
|
|
12
|
+
disconnect(): void;
|
|
13
|
+
unobserve(target: Element): void;
|
|
14
|
+
watchAndTag: (target: Element, tagOrCallback: ObserveArg_TagOrCallback) => void;
|
|
15
|
+
}
|
|
16
|
+
export type IntersectionObserverArgs = {
|
|
17
|
+
onEntry: (entry: {
|
|
18
|
+
time: DOMHighResTimeStamp;
|
|
19
|
+
type: VCObserverEntryType;
|
|
20
|
+
target: HTMLElement;
|
|
21
|
+
rect: DOMRectReadOnly;
|
|
22
|
+
mutationData: MutationData | null | undefined;
|
|
23
|
+
}) => void;
|
|
24
|
+
onObserved?: (props: {
|
|
25
|
+
time: DOMHighResTimeStamp;
|
|
26
|
+
elements: ReadonlyArray<WeakRef<HTMLElement>>;
|
|
27
|
+
}) => void;
|
|
28
|
+
};
|
|
29
|
+
export declare function createIntersectionObserver(args: IntersectionObserverArgs): VCIntersectionObserver | null;
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type CreateMutationObserverProps = {
|
|
2
|
+
onAttributeMutation: (props: {
|
|
3
|
+
target: HTMLElement;
|
|
4
|
+
attributeName: string;
|
|
5
|
+
}) => void;
|
|
6
|
+
onMutationFinished?: (props: {
|
|
7
|
+
targets: Array<HTMLElement>;
|
|
8
|
+
}) => void;
|
|
9
|
+
onChildListMutation: (props: {
|
|
10
|
+
addedNodes: ReadonlyArray<HTMLElement>;
|
|
11
|
+
removedNodes: ReadonlyArray<HTMLElement>;
|
|
12
|
+
}) => void;
|
|
13
|
+
};
|
|
14
|
+
export default function createMutationObserver({ onAttributeMutation, onChildListMutation, onMutationFinished, }: CreateMutationObserverProps): MutationObserver | null;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare function convertPhysicalToLogicalResolution(rect: DOMRect): DOMRect;
|
|
2
|
+
type ChangedRect = Array<{
|
|
3
|
+
node: HTMLElement;
|
|
4
|
+
rect: DOMRectReadOnly;
|
|
5
|
+
previousRect: DOMRectReadOnly;
|
|
6
|
+
}>;
|
|
7
|
+
export type CreatePerformanceObserverArgs = {
|
|
8
|
+
onLayoutShift: (args: {
|
|
9
|
+
time: DOMHighResTimeStamp;
|
|
10
|
+
changedRects: ChangedRect;
|
|
11
|
+
}) => void;
|
|
12
|
+
};
|
|
13
|
+
export default function createPerformanceObserver(args: CreatePerformanceObserverArgs): PerformanceObserver | null;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type MutationRecordWithTimestamp = MutationRecord & {
|
|
2
|
+
timestamp?: number;
|
|
3
|
+
};
|
|
4
|
+
export type AttributeMutationData = {
|
|
5
|
+
attributeName: string;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Add here when there are more type of mutation data
|
|
9
|
+
*/
|
|
10
|
+
export type MutationData = AttributeMutationData;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type ObservedWindowEvent = 'wheel' | 'scroll' | 'keydown' | 'resize';
|
|
2
|
+
export type OnEventCallback = (args: {
|
|
3
|
+
time: DOMHighResTimeStamp;
|
|
4
|
+
type: ObservedWindowEvent;
|
|
5
|
+
event: Event;
|
|
6
|
+
}) => void;
|
|
7
|
+
export type WindowEventObserverOptions = {
|
|
8
|
+
onEvent: OnEventCallback;
|
|
9
|
+
};
|
|
10
|
+
export default class WindowEventObserver {
|
|
11
|
+
private unbindFns;
|
|
12
|
+
private onEvent;
|
|
13
|
+
constructor(opts: WindowEventObserverOptions);
|
|
14
|
+
private bindEvent;
|
|
15
|
+
start(): void;
|
|
16
|
+
stop(): void;
|
|
17
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/react-ufo",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0",
|
|
4
4
|
"description": "Parts of React UFO that are publicly available",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -127,6 +127,9 @@
|
|
|
127
127
|
}
|
|
128
128
|
},
|
|
129
129
|
"platform-feature-flags": {
|
|
130
|
+
"platform_ufo_canvas_heatmap_full_precision": {
|
|
131
|
+
"type": "boolean"
|
|
132
|
+
},
|
|
130
133
|
"platform_ufo_fix_vc_observer_rounding_error": {
|
|
131
134
|
"type": "boolean"
|
|
132
135
|
},
|
|
@@ -162,6 +165,15 @@
|
|
|
162
165
|
},
|
|
163
166
|
"ufo_support_other_resource_type_js": {
|
|
164
167
|
"type": "boolean"
|
|
168
|
+
},
|
|
169
|
+
"platform_ufo_vc_observer_new": {
|
|
170
|
+
"type": "boolean"
|
|
171
|
+
},
|
|
172
|
+
"platform_ufo_vc_ttai_on_paint": {
|
|
173
|
+
"type": "boolean"
|
|
174
|
+
},
|
|
175
|
+
"enable_ufo_devtools_api_for_extra_events": {
|
|
176
|
+
"type": "boolean"
|
|
165
177
|
}
|
|
166
178
|
}
|
|
167
179
|
}
|