@revturbine/sdk 0.2.33 → 0.2.34
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/dist/headless.js +14 -14
- package/dist/headless.js.map +1 -1
- package/dist/index.js +64 -64
- package/dist/index.js.map +1 -1
- package/dist/types/web-sdk/controllers.d.ts +23 -1
- package/dist/types/web-sdk/controllers.d.ts.map +1 -1
- package/dist/types/web-sdk/placements/types.d.ts +9 -0
- package/dist/types/web-sdk/placements/types.d.ts.map +1 -1
- package/dist/types/web-sdk/react/usePlacement.d.ts +24 -1
- package/dist/types/web-sdk/react/usePlacement.d.ts.map +1 -1
- package/dist/types/web-sdk/telemetry/index.d.ts +2 -0
- package/dist/types/web-sdk/telemetry/index.d.ts.map +1 -1
- package/dist/types/web-sdk/telemetry/visibility.d.ts +56 -0
- package/dist/types/web-sdk/telemetry/visibility.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
29
|
import type { RevTurbineCustomerSdk, RevTurbineInitInputOptions, RevTurbinePlacementConfig, RevTurbineSurfaceSlotConfig, RevTurbinePlacementDecision, RevTurbinePlacementContent, RevTurbinePlacementDecisionOverrides, RevTurbinePlacementRequestConfig, RevTurbineContextMode, RevTurbineEntitlementContext, RevTurbineUserContext, EntitlementResult, PlacementOutput, UserTargetingContext, RevTurbineUsageSnapshot, RevTurbineTrialContext, UsageBalances, JsonObject } from './customer-side';
|
|
30
|
+
import type { ExposureBasis } from './telemetry';
|
|
30
31
|
import type { RevTurbineTheme } from './theme/types';
|
|
31
32
|
/** Callback used to subscribe to state changes in controllers. */
|
|
32
33
|
export type ChangeListener = () => void;
|
|
@@ -61,6 +62,12 @@ export interface PlacementControllerState {
|
|
|
61
62
|
readonly visible: boolean;
|
|
62
63
|
readonly decision: RevTurbinePlacementDecision | null;
|
|
63
64
|
readonly content: RevTurbinePlacementContent['content'] | null;
|
|
65
|
+
/**
|
|
66
|
+
* How the placement's visual root came to be considered exposed, or `null`
|
|
67
|
+
* before {@link PlacementController.markVisible} is called (plan 144 TASK-9).
|
|
68
|
+
* `'render_fallback'` when `IntersectionObserver` was unavailable (AC-10).
|
|
69
|
+
*/
|
|
70
|
+
readonly exposureBasis: ExposureBasis | null;
|
|
64
71
|
}
|
|
65
72
|
/**
|
|
66
73
|
* Framework-agnostic placement lifecycle controller.
|
|
@@ -88,9 +95,24 @@ export declare class PlacementController {
|
|
|
88
95
|
private _error;
|
|
89
96
|
private _impressionTracked;
|
|
90
97
|
private _loadSeq;
|
|
98
|
+
private _exposed;
|
|
99
|
+
private _exposureBasis;
|
|
91
100
|
constructor(sdk: RevTurbineCustomerSdk, options: PlacementControllerOptions);
|
|
92
101
|
/** Current state snapshot. */
|
|
93
102
|
get state(): PlacementControllerState;
|
|
103
|
+
/**
|
|
104
|
+
* Called by the viewport-exposure substrate when the placement's visual root
|
|
105
|
+
* first enters the viewport — or immediately with `'render_fallback'` when
|
|
106
|
+
* `IntersectionObserver` is unavailable (plan 144 TASK-9 / AC-10). Records the
|
|
107
|
+
* exposure and its basis; idempotent (only the first call takes effect).
|
|
108
|
+
*
|
|
109
|
+
* This is the seam the viewport-exposure opt-in builds on: under
|
|
110
|
+
* `placementExposure: 'viewport'` (TASK-11) the resolution-time impression
|
|
111
|
+
* moves here. In TASK-9 it records state without emitting an event.
|
|
112
|
+
*
|
|
113
|
+
* @param basis - how exposure was established; defaults to `'viewport'`
|
|
114
|
+
*/
|
|
115
|
+
markVisible(basis?: ExposureBasis): void;
|
|
94
116
|
/** Convenience: `true` when the current decision says the placement is visible. */
|
|
95
117
|
get visible(): boolean;
|
|
96
118
|
/** Current resolved content, or `null` if no decision has been loaded. */
|
|
@@ -106,7 +128,7 @@ export declare class PlacementController {
|
|
|
106
128
|
* automatically records an impression event.
|
|
107
129
|
*/
|
|
108
130
|
load(): Promise<RevTurbinePlacementDecision | null>;
|
|
109
|
-
/** Re-fetch the placement decision (clears impression tracking). */
|
|
131
|
+
/** Re-fetch the placement decision (clears impression + exposure tracking). */
|
|
110
132
|
refresh(): Promise<RevTurbinePlacementDecision | null>;
|
|
111
133
|
/** Record a dismiss interaction and hide the placement. */
|
|
112
134
|
dismiss(cooldownMs?: number): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controllers.d.ts","sourceRoot":"","sources":["../../../controllers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EACV,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,oCAAoC,EACpC,gCAAgC,EAChC,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,EAGrB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,aAAa,EACb,UAAU,EACX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,eAAe,EAAwB,MAAM,eAAe,CAAC;AAM3E,kEAAkE;AAClE,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC;AAIxC;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,2DAA2D;IAC3D,SAAS,CAAC,EAAE,yBAAyB,CAAC;IACtC,yEAAyE;IACzE,WAAW,CAAC,EAAE,2BAA2B,CAAC;IAC1C,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC,oDAAoD;IACpD,SAAS,CAAC,EAAE,oCAAoC,CAAC;IACjD,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACnD,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iGAAiG;IACjG,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,GAAG,IAAI,CAAC;IACtD,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"controllers.d.ts","sourceRoot":"","sources":["../../../controllers.ts"],"names":[],"mappings":"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"}
|
|
@@ -111,6 +111,15 @@ export interface PlacementSlotProps<C extends ResolvedContent = ResolvedContent>
|
|
|
111
111
|
className?: string;
|
|
112
112
|
/** Custom inline styles. */
|
|
113
113
|
style?: React.CSSProperties;
|
|
114
|
+
/**
|
|
115
|
+
* Optional exposure ref (plan 144 TASK-9 / REQ-18). Attach it to the slot's
|
|
116
|
+
* true visual root so RevTurbine can observe when the placement actually
|
|
117
|
+
* enters the viewport for viewport-qualified exposure; when
|
|
118
|
+
* `IntersectionObserver` is unavailable it falls back to render
|
|
119
|
+
* (`exposure_basis: 'render_fallback'`). **Additive and optional** — omitting
|
|
120
|
+
* it changes nothing, and it never requires a wrapper element (REQ-18/REQ-19).
|
|
121
|
+
*/
|
|
122
|
+
exposureRef?: (element: Element | null) => void;
|
|
114
123
|
}
|
|
115
124
|
/**
|
|
116
125
|
* A placement slot type definition.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../placements/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,KAAK,EAAE,gCAAgC,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAE/F;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,6DAA6D;AAC7D,MAAM,MAAM,eAAe,GAAG,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,MAAM,yBAAyB,GAAG,gCAAgC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEzF,4CAA4C;AAC5C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,yBAAyB,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,yDAAyD;IACzD,SAAS,EAAE,eAAe,CAAC;IAC3B,kEAAkE;IAClE,IAAI,EAAE,SAAS,GAAG,WAAW,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAC;AAEzF;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;AAE1D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe;IAC7E,0DAA0D;IAC1D,SAAS,EAAE,eAAe,CAAC;IAC3B,oEAAoE;IACpE,OAAO,EAAE,CAAC,CAAC;IACX,uCAAuC;IACvC,MAAM,EAAE,eAAe,CAAC;IACxB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,iDAAiD;IACjD,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,iDAAiD;IACjD,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,kDAAkD;IAClD,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,kDAAkD;IAClD,OAAO,EAAE,OAAO,CAAC;IACjB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../placements/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type RevTurbinePlacementConfig, type RevTurbineSurfaceSlotConfig, type RevTurbinePlacementContent, type RevTurbinePlacementDecision, type RevTurbinePlacementDecisionOverrides, type RevTurbineContextMode } from '../customer-side';
|
|
2
|
+
import { type ExposureBasis } from '../telemetry';
|
|
2
3
|
/**
|
|
3
4
|
* Options for the {@link usePlacement} hook.
|
|
4
5
|
*/
|
|
@@ -19,6 +20,13 @@ export type UsePlacementOptions = {
|
|
|
19
20
|
ttlMs?: number;
|
|
20
21
|
/** Automatically load a decision on mount. Default `true`. */
|
|
21
22
|
autoLoad?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Whether a visible decision auto-tracks a resolution-time impression. Default
|
|
25
|
+
* `true`. Set `false` to suppress it — e.g. when you attach {@link
|
|
26
|
+
* UsePlacementResult.exposureRef} and want the impression to fire on viewport
|
|
27
|
+
* exposure instead (plan 144 TASK-9 / REQ-15). Read at mount.
|
|
28
|
+
*/
|
|
29
|
+
autoTrackImpression?: boolean;
|
|
22
30
|
};
|
|
23
31
|
/**
|
|
24
32
|
* Result returned by the {@link usePlacement} hook.
|
|
@@ -36,6 +44,21 @@ export type UsePlacementResult = {
|
|
|
36
44
|
remindMeLater: (seconds?: number) => Promise<void>;
|
|
37
45
|
ctaClick: (ctaTarget?: string) => Promise<void>;
|
|
38
46
|
ctaComplete: (ctaTarget?: string) => Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Ref callback to attach to the placement's true visual root (plan 144
|
|
49
|
+
* TASK-9). RevTurbine observes when that element enters the viewport for
|
|
50
|
+
* viewport-qualified exposure; when `IntersectionObserver` is unavailable it
|
|
51
|
+
* falls back to render (`exposure_basis: 'render_fallback'`, AC-10). Attaching
|
|
52
|
+
* it is optional and never adds a wrapper element (REQ-18/REQ-19).
|
|
53
|
+
*/
|
|
54
|
+
exposureRef: (element: Element | null) => void;
|
|
55
|
+
/**
|
|
56
|
+
* How the placement's visual root was exposed, or `null` before it enters the
|
|
57
|
+
* viewport (plan 144 TASK-9). `'render_fallback'` when `IntersectionObserver`
|
|
58
|
+
* is unavailable (AC-10). Only meaningful once {@link
|
|
59
|
+
* UsePlacementResult.exposureRef} is attached.
|
|
60
|
+
*/
|
|
61
|
+
exposureBasis: ExposureBasis | null;
|
|
39
62
|
};
|
|
40
63
|
/**
|
|
41
64
|
* React hook for loading a placement decision and managing interactions.
|
|
@@ -59,5 +82,5 @@ export type UsePlacementResult = {
|
|
|
59
82
|
* );
|
|
60
83
|
* ```
|
|
61
84
|
*/
|
|
62
|
-
export declare function usePlacement({ placement, surfaceSlot, userId, contextMode, overrides, traits, ttlMs, autoLoad, }: UsePlacementOptions): UsePlacementResult;
|
|
85
|
+
export declare function usePlacement({ placement, surfaceSlot, userId, contextMode, overrides, traits, ttlMs, autoLoad, autoTrackImpression, }: UsePlacementOptions): UsePlacementResult;
|
|
63
86
|
//# sourceMappingURL=usePlacement.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePlacement.d.ts","sourceRoot":"","sources":["../../../../react/usePlacement.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,oCAAoC,EACzC,KAAK,qBAAqB,EAC3B,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"usePlacement.d.ts","sourceRoot":"","sources":["../../../../react/usePlacement.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,oCAAoC,EACzC,KAAK,qBAAqB,EAC3B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAGnE;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,2DAA2D;IAC3D,SAAS,CAAC,EAAE,yBAAyB,CAAC;IACtC,yEAAyE;IACzE,WAAW,CAAC,EAAE,2BAA2B,CAAC;IAC1C,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC,oDAAoD;IACpD,SAAS,CAAC,EAAE,oCAAoC,CAAC;IACjD,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACnD,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,2BAA2B,GAAG,IAAI,CAAC;IAC7C,OAAO,EAAE,0BAA0B,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IACtD,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,aAAa,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,WAAW,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD;;;;;;OAMG;IACH,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/C;;;;;OAKG;IACH,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;CACrC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,WAAW,EACX,MAAM,EACN,WAAoB,EACpB,SAAS,EACT,MAAM,EACN,KAAK,EACL,QAAe,EACf,mBAAmB,GACpB,EAAE,mBAAmB,GAAG,kBAAkB,CAuG1C"}
|
|
@@ -12,4 +12,6 @@ export { deliverWithRetry } from './delivery';
|
|
|
12
12
|
export type { DeliverOptions, DeliveryOutcome } from './delivery';
|
|
13
13
|
export { createTelemetryCounters } from './counters';
|
|
14
14
|
export type { TelemetryCounters } from './counters';
|
|
15
|
+
export { createExposureManager, exposureManager } from './visibility';
|
|
16
|
+
export type { ExposureBasis, ExposureManager, ExposureObserveOptions } from './visibility';
|
|
15
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../telemetry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC9D,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../telemetry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC9D,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACtE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Viewport-exposure substrate (plan 144 TASK-9).
|
|
3
|
+
*
|
|
4
|
+
* A small manager over `IntersectionObserver` that answers "has this element
|
|
5
|
+
* actually entered the viewport?" for viewport-qualified exposure. It exists
|
|
6
|
+
* for REQ-18 (attach exposure to the true visual root) and AC-10 (degrade
|
|
7
|
+
* gracefully when `IntersectionObserver` is unavailable).
|
|
8
|
+
*
|
|
9
|
+
* Two design points the plan calls out:
|
|
10
|
+
* - **One shared observer per distinct config.** Elements requesting the same
|
|
11
|
+
* `threshold` + `rootMargin` share a single `IntersectionObserver` — one
|
|
12
|
+
* observer, many targets — rather than one observer per placement.
|
|
13
|
+
* - **Graceful fallback (AC-10).** With no `IntersectionObserver` (SSR, old
|
|
14
|
+
* browsers, a stubbed environment) the manager doesn't throw: it treats
|
|
15
|
+
* render as exposure and reports `exposure_basis: 'render_fallback'`, so the
|
|
16
|
+
* signal degrades instead of disappearing.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* How an element came to be considered "exposed":
|
|
20
|
+
* - `viewport` — it crossed the visibility threshold in the viewport.
|
|
21
|
+
* - `render_fallback` — `IntersectionObserver` was unavailable, so render was
|
|
22
|
+
* treated as exposure (AC-10).
|
|
23
|
+
*/
|
|
24
|
+
export type ExposureBasis = 'viewport' | 'render_fallback';
|
|
25
|
+
/** Per-element viewport-qualification options. */
|
|
26
|
+
export interface ExposureObserveOptions {
|
|
27
|
+
/** Fraction of the element that must be visible (0–1). Default 0.5. */
|
|
28
|
+
threshold?: number;
|
|
29
|
+
/** `IntersectionObserver` root margin. Default `'0px'`. */
|
|
30
|
+
rootMargin?: string;
|
|
31
|
+
/** Dwell: how long the element must stay visible before it counts. Default 0. */
|
|
32
|
+
minVisibleMs?: number;
|
|
33
|
+
}
|
|
34
|
+
/** Observes elements and reports when each first qualifies as exposed. */
|
|
35
|
+
export interface ExposureManager {
|
|
36
|
+
/** True when the runtime can actually observe viewport visibility. */
|
|
37
|
+
readonly supported: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Observe `el`; call `onExposed` once, the first time it qualifies. Returns an
|
|
40
|
+
* unobserve function to call on unmount (before exposure fires).
|
|
41
|
+
*/
|
|
42
|
+
observe(el: Element, options: ExposureObserveOptions, onExposed: (basis: ExposureBasis) => void): () => void;
|
|
43
|
+
/** Tear down every shared observer. */
|
|
44
|
+
disconnect(): void;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Create an exposure manager. The SDK shares one instance across a page
|
|
48
|
+
* ({@link exposureManager}); tests create their own for isolation.
|
|
49
|
+
*/
|
|
50
|
+
export declare function createExposureManager(): ExposureManager;
|
|
51
|
+
/**
|
|
52
|
+
* Process-wide exposure manager. Sharing one instance lets placements requesting
|
|
53
|
+
* the same config share a single `IntersectionObserver`.
|
|
54
|
+
*/
|
|
55
|
+
export declare const exposureManager: ExposureManager;
|
|
56
|
+
//# sourceMappingURL=visibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visibility.d.ts","sourceRoot":"","sources":["../../../../telemetry/visibility.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,iBAAiB,CAAC;AAE3D,kDAAkD;AAClD,MAAM,WAAW,sBAAsB;IACrC,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,OAAO,CACL,EAAE,EAAE,OAAO,EACX,OAAO,EAAE,sBAAsB,EAC/B,SAAS,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GACxC,MAAM,IAAI,CAAC;IACd,uCAAuC;IACvC,UAAU,IAAI,IAAI,CAAC;CACpB;AAiBD;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAgGvD;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,eAAyC,CAAC"}
|
package/package.json
CHANGED