@atlaskit/react-ufo 3.13.12 → 3.13.14
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 +19 -0
- package/dist/cjs/config/index.js +4 -4
- package/dist/cjs/create-payload/index.js +1 -2
- package/dist/cjs/create-payload/utils/get-ssr-done-time-value.js +1 -2
- package/dist/cjs/interaction-ignore/ufo-interaction-ignore.js +1 -2
- package/dist/cjs/interaction-metrics/index.js +10 -10
- package/dist/cjs/interaction-metrics-init/index.js +1 -2
- package/dist/cjs/label/UFOLabel.js +1 -2
- package/dist/cjs/load-hold/UFOLoadHold.js +1 -2
- package/dist/cjs/placeholder/Placeholder.js +1 -2
- package/dist/cjs/placeholder/loosely-lazy/lazy-suspense.js +1 -2
- package/dist/cjs/segment/segment-highlight.js +1 -2
- package/dist/cjs/segment/segment.js +1 -2
- package/dist/cjs/trace-transition/index.js +1 -2
- package/dist/cjs/vc/vc-observer/getVCRevisionsData.js +15 -5
- package/dist/cjs/vc/vc-observer/index.js +38 -51
- package/dist/cjs/vc/vc-observer/media-wrapper/index.js +1 -2
- package/dist/cjs/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +76 -42
- package/dist/cjs/vc/vc-observer-new/metric-calculator/fy25_03/index.js +1 -15
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +2 -2
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +1 -2
- package/dist/es2019/interaction-metrics/index.js +10 -10
- package/dist/es2019/vc/vc-observer/getVCRevisionsData.js +15 -5
- package/dist/es2019/vc/vc-observer/index.js +3 -18
- package/dist/es2019/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +40 -22
- package/dist/es2019/vc/vc-observer-new/metric-calculator/fy25_03/index.js +1 -13
- package/dist/esm/config/index.js +4 -4
- package/dist/esm/interaction-metrics/index.js +10 -10
- package/dist/esm/vc/vc-observer/getVCRevisionsData.js +15 -5
- package/dist/esm/vc/vc-observer/index.js +38 -51
- package/dist/esm/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +77 -43
- package/dist/esm/vc/vc-observer-new/metric-calculator/fy25_03/index.js +1 -15
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +2 -2
- package/dist/types/common/vc/types.d.ts +1 -0
- package/dist/types/vc/vc-observer/getVCRevisionsData.d.ts +3 -2
- package/dist/types/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +4 -1
- package/dist/types/vc/vc-observer-new/metric-calculator/fy25_03/index.d.ts +0 -1
- package/dist/types-ts4.5/common/vc/types.d.ts +1 -0
- package/dist/types-ts4.5/vc/vc-observer/getVCRevisionsData.d.ts +3 -2
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +4 -1
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/fy25_03/index.d.ts +0 -1
- package/package.json +4 -7
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
11
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
12
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
13
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
@@ -28,6 +29,53 @@ var AbstractVCCalculatorBase = exports.default = /*#__PURE__*/function () {
|
|
|
28
29
|
return 'rect' in entry.data;
|
|
29
30
|
});
|
|
30
31
|
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Calculate ratios for each element based on their viewport coverage.
|
|
35
|
+
*/
|
|
36
|
+
}, {
|
|
37
|
+
key: "calculateRatios",
|
|
38
|
+
value: function calculateRatios(filteredEntries) {
|
|
39
|
+
var ratios = {};
|
|
40
|
+
var viewportWidth = (0, _getViewportWidth.default)();
|
|
41
|
+
var viewportHeight = (0, _getViewportHeight.default)();
|
|
42
|
+
var totalViewportArea = viewportWidth * viewportHeight;
|
|
43
|
+
if (totalViewportArea === 0) {
|
|
44
|
+
return ratios;
|
|
45
|
+
}
|
|
46
|
+
var elementRects = new Map();
|
|
47
|
+
var _iterator = _createForOfIteratorHelper(filteredEntries),
|
|
48
|
+
_step;
|
|
49
|
+
try {
|
|
50
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
51
|
+
var _entry = _step.value;
|
|
52
|
+
if ('rect' in _entry.data) {
|
|
53
|
+
var viewportEntry = _entry.data;
|
|
54
|
+
elementRects.set(viewportEntry.elementName, viewportEntry.rect);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
} catch (err) {
|
|
58
|
+
_iterator.e(err);
|
|
59
|
+
} finally {
|
|
60
|
+
_iterator.f();
|
|
61
|
+
}
|
|
62
|
+
var _iterator2 = _createForOfIteratorHelper(elementRects),
|
|
63
|
+
_step2;
|
|
64
|
+
try {
|
|
65
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
66
|
+
var _step2$value = (0, _slicedToArray2.default)(_step2.value, 2),
|
|
67
|
+
elementName = _step2$value[0],
|
|
68
|
+
rect = _step2$value[1];
|
|
69
|
+
var elementArea = rect.width * rect.height;
|
|
70
|
+
ratios[elementName] = elementArea / totalViewportArea;
|
|
71
|
+
}
|
|
72
|
+
} catch (err) {
|
|
73
|
+
_iterator2.e(err);
|
|
74
|
+
} finally {
|
|
75
|
+
_iterator2.f();
|
|
76
|
+
}
|
|
77
|
+
return ratios;
|
|
78
|
+
}
|
|
31
79
|
}, {
|
|
32
80
|
key: "calculateBasic",
|
|
33
81
|
value: function () {
|
|
@@ -67,7 +115,7 @@ var AbstractVCCalculatorBase = exports.default = /*#__PURE__*/function () {
|
|
|
67
115
|
key: "calculateWithDebugInfo",
|
|
68
116
|
value: function () {
|
|
69
117
|
var _calculateWithDebugInfo = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(filteredEntries, startTime, stopTime, isPostInteraction, isVCClean, interactionId, dirtyReason) {
|
|
70
|
-
var percentiles, viewportEntries, vcLogs, vcDetails, percentileIndex, entryDataBuffer,
|
|
118
|
+
var percentiles, viewportEntries, vcLogs, vcDetails, percentileIndex, entryDataBuffer, _iterator3, _step3, _entry2, time, viewportPercentage, entries, elementNames, previousResult, i, percentile, _ufo_devtool_onVCRev, _ref;
|
|
71
119
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
72
120
|
while (1) switch (_context2.prev = _context2.next) {
|
|
73
121
|
case 0:
|
|
@@ -92,16 +140,16 @@ var AbstractVCCalculatorBase = exports.default = /*#__PURE__*/function () {
|
|
|
92
140
|
_context2.next = 28;
|
|
93
141
|
break;
|
|
94
142
|
}
|
|
95
|
-
|
|
143
|
+
_iterator3 = _createForOfIteratorHelper(vcLogs);
|
|
96
144
|
_context2.prev = 10;
|
|
97
|
-
|
|
145
|
+
_iterator3.s();
|
|
98
146
|
case 12:
|
|
99
|
-
if ((
|
|
147
|
+
if ((_step3 = _iterator3.n()).done) {
|
|
100
148
|
_context2.next = 20;
|
|
101
149
|
break;
|
|
102
150
|
}
|
|
103
|
-
|
|
104
|
-
time =
|
|
151
|
+
_entry2 = _step3.value;
|
|
152
|
+
time = _entry2.time, viewportPercentage = _entry2.viewportPercentage, entries = _entry2.entries; // Only process entries if we haven't reached all percentiles
|
|
105
153
|
if (!(percentileIndex >= percentiles.length)) {
|
|
106
154
|
_context2.next = 17;
|
|
107
155
|
break;
|
|
@@ -138,10 +186,10 @@ var AbstractVCCalculatorBase = exports.default = /*#__PURE__*/function () {
|
|
|
138
186
|
case 22:
|
|
139
187
|
_context2.prev = 22;
|
|
140
188
|
_context2.t0 = _context2["catch"](10);
|
|
141
|
-
|
|
189
|
+
_iterator3.e(_context2.t0);
|
|
142
190
|
case 25:
|
|
143
191
|
_context2.prev = 25;
|
|
144
|
-
|
|
192
|
+
_iterator3.f();
|
|
145
193
|
return _context2.finish(25);
|
|
146
194
|
case 28:
|
|
147
195
|
// Fill in any missing percentiles with the last known values
|
|
@@ -181,7 +229,7 @@ var AbstractVCCalculatorBase = exports.default = /*#__PURE__*/function () {
|
|
|
181
229
|
}
|
|
182
230
|
}, _callee2, this, [[10, 22, 25, 28]]);
|
|
183
231
|
}));
|
|
184
|
-
function calculateWithDebugInfo(_x4, _x5, _x6, _x7, _x8, _x9,
|
|
232
|
+
function calculateWithDebugInfo(_x4, _x5, _x6, _x7, _x8, _x9, _x0) {
|
|
185
233
|
return _calculateWithDebugInfo.apply(this, arguments);
|
|
186
234
|
}
|
|
187
235
|
return calculateWithDebugInfo;
|
|
@@ -193,7 +241,7 @@ var AbstractVCCalculatorBase = exports.default = /*#__PURE__*/function () {
|
|
|
193
241
|
var _this = this,
|
|
194
242
|
_vcDetails$90$t,
|
|
195
243
|
_vcDetails$;
|
|
196
|
-
var startTime, stopTime, orderedEntries, interactionId, isPostInteraction, filteredEntries, isVCClean, dirtyReason, getVCCleanStatusResult, useDebugInfo, vcDetails;
|
|
244
|
+
var startTime, stopTime, orderedEntries, interactionId, isPostInteraction, filteredEntries, isVCClean, dirtyReason, getVCCleanStatusResult, useDebugInfo, vcDetails, result;
|
|
197
245
|
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
198
246
|
while (1) switch (_context3.prev = _context3.next) {
|
|
199
247
|
case 0:
|
|
@@ -201,15 +249,11 @@ var AbstractVCCalculatorBase = exports.default = /*#__PURE__*/function () {
|
|
|
201
249
|
filteredEntries = orderedEntries.filter(function (entry) {
|
|
202
250
|
return _this.isEntryIncluded(entry);
|
|
203
251
|
});
|
|
204
|
-
if (!(0, _platformFeatureFlags.fg)('platform_ufo_add_vc_abort_reason_by_revisions')) {
|
|
205
|
-
_context3.next = 10;
|
|
206
|
-
break;
|
|
207
|
-
}
|
|
208
252
|
getVCCleanStatusResult = this.getVCCleanStatus(filteredEntries);
|
|
209
253
|
isVCClean = getVCCleanStatusResult.isVCClean;
|
|
210
254
|
dirtyReason = getVCCleanStatusResult.dirtyReason;
|
|
211
255
|
if (isVCClean) {
|
|
212
|
-
_context3.next =
|
|
256
|
+
_context3.next = 7;
|
|
213
257
|
break;
|
|
214
258
|
}
|
|
215
259
|
return _context3.abrupt("return", {
|
|
@@ -218,52 +262,42 @@ var AbstractVCCalculatorBase = exports.default = /*#__PURE__*/function () {
|
|
|
218
262
|
clean: false,
|
|
219
263
|
abortReason: dirtyReason
|
|
220
264
|
});
|
|
221
|
-
case
|
|
222
|
-
_context3.next = 13;
|
|
223
|
-
break;
|
|
224
|
-
case 10:
|
|
225
|
-
isVCClean = this.isVCClean(filteredEntries);
|
|
226
|
-
if (isVCClean) {
|
|
227
|
-
_context3.next = 13;
|
|
228
|
-
break;
|
|
229
|
-
}
|
|
230
|
-
return _context3.abrupt("return", {
|
|
231
|
-
revision: this.revisionNo,
|
|
232
|
-
'metric:vc90': null,
|
|
233
|
-
clean: false
|
|
234
|
-
});
|
|
235
|
-
case 13:
|
|
265
|
+
case 7:
|
|
236
266
|
useDebugInfo = (0, _platformFeatureFlags.fg)('platform_ufo_ttvc_v3_devtool');
|
|
237
267
|
if (!useDebugInfo) {
|
|
238
|
-
_context3.next =
|
|
268
|
+
_context3.next = 14;
|
|
239
269
|
break;
|
|
240
270
|
}
|
|
241
|
-
_context3.next =
|
|
271
|
+
_context3.next = 11;
|
|
242
272
|
return this.calculateWithDebugInfo(filteredEntries, startTime, stopTime, isPostInteraction, isVCClean, interactionId, dirtyReason);
|
|
243
|
-
case
|
|
273
|
+
case 11:
|
|
244
274
|
_context3.t0 = _context3.sent;
|
|
245
|
-
_context3.next =
|
|
275
|
+
_context3.next = 17;
|
|
246
276
|
break;
|
|
247
|
-
case
|
|
248
|
-
_context3.next =
|
|
277
|
+
case 14:
|
|
278
|
+
_context3.next = 16;
|
|
249
279
|
return this.calculateBasic(filteredEntries, startTime, stopTime);
|
|
250
|
-
case
|
|
280
|
+
case 16:
|
|
251
281
|
_context3.t0 = _context3.sent;
|
|
252
|
-
case
|
|
282
|
+
case 17:
|
|
253
283
|
vcDetails = _context3.t0;
|
|
254
|
-
|
|
284
|
+
result = {
|
|
255
285
|
revision: this.revisionNo,
|
|
256
286
|
clean: true,
|
|
257
287
|
'metric:vc90': (_vcDetails$90$t = vcDetails === null || vcDetails === void 0 || (_vcDetails$ = vcDetails['90']) === null || _vcDetails$ === void 0 ? void 0 : _vcDetails$.t) !== null && _vcDetails$90$t !== void 0 ? _vcDetails$90$t : null,
|
|
258
288
|
vcDetails: vcDetails !== null && vcDetails !== void 0 ? vcDetails : undefined
|
|
259
|
-
}
|
|
260
|
-
|
|
289
|
+
};
|
|
290
|
+
if ((0, _platformFeatureFlags.fg)('platform_ufo_rev_ratios')) {
|
|
291
|
+
result.ratios = this.calculateRatios(filteredEntries);
|
|
292
|
+
}
|
|
293
|
+
return _context3.abrupt("return", result);
|
|
294
|
+
case 21:
|
|
261
295
|
case "end":
|
|
262
296
|
return _context3.stop();
|
|
263
297
|
}
|
|
264
298
|
}, _callee3, this);
|
|
265
299
|
}));
|
|
266
|
-
function calculate(
|
|
300
|
+
function calculate(_x1) {
|
|
267
301
|
return _calculate.apply(this, arguments);
|
|
268
302
|
}
|
|
269
303
|
return calculate;
|
|
@@ -47,7 +47,7 @@ var VCCalculator_FY25_03 = exports.default = /*#__PURE__*/function (_AbstractVCC
|
|
|
47
47
|
if (attributeName === 'data-aui-version' && (0, _platformFeatureFlags.fg)('platform_ufo_filter_out_aui_attribute_changes')) {
|
|
48
48
|
return false;
|
|
49
49
|
}
|
|
50
|
-
if (
|
|
50
|
+
if (attributeName === 'data-testid' || attributeName === 'data-vc' || attributeName === 'data-ssr-placeholder' || attributeName === 'data-ssr-placeholder-replace' || attributeName === 'data-vc-nvs' || attributeName === 'data-media-vc-wrapper' || attributeName === 'data-auto-scrollable' || attributeName === 'id' || attributeName === 'tabindex' || NON_VISUAL_ARIA_ATTRIBUTES.includes(attributeName)) {
|
|
51
51
|
return false;
|
|
52
52
|
}
|
|
53
53
|
return true;
|
|
@@ -57,20 +57,6 @@ var VCCalculator_FY25_03 = exports.default = /*#__PURE__*/function (_AbstractVCC
|
|
|
57
57
|
}
|
|
58
58
|
return true;
|
|
59
59
|
}
|
|
60
|
-
}, {
|
|
61
|
-
key: "isVCClean",
|
|
62
|
-
value: function isVCClean(filteredEntries) {
|
|
63
|
-
var hasAbortEvent = filteredEntries.some(function (entry) {
|
|
64
|
-
if (entry.data.type === 'window:event') {
|
|
65
|
-
var data = entry.data;
|
|
66
|
-
if (ABORTING_WINDOW_EVENT.includes(data.eventType)) {
|
|
67
|
-
return true;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
return false;
|
|
71
|
-
});
|
|
72
|
-
return !hasAbortEvent;
|
|
73
|
-
}
|
|
74
60
|
}, {
|
|
75
61
|
key: "getVCCleanStatus",
|
|
76
62
|
value: function getVCCleanStatus(filteredEntries) {
|
package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js
CHANGED
|
@@ -214,8 +214,8 @@ function calculatePercentilesWithDebugInfo(timePixelCounts, elementMap, totalPix
|
|
|
214
214
|
var sortedEntries = Array.from(timePixelCounts.entries()).sort(function (_ref7, _ref8) {
|
|
215
215
|
var _ref9 = (0, _slicedToArray2.default)(_ref7, 1),
|
|
216
216
|
timeA = _ref9[0];
|
|
217
|
-
var
|
|
218
|
-
timeB =
|
|
217
|
+
var _ref0 = (0, _slicedToArray2.default)(_ref8, 1),
|
|
218
|
+
timeB = _ref0[0];
|
|
219
219
|
return Number(timeA) - Number(timeB);
|
|
220
220
|
});
|
|
221
221
|
for (var i = 0; i < sortedEntries.length; i++) {
|
|
@@ -17,5 +17,4 @@ Object.defineProperty(exports, "calculateTTVCPercentilesWithDebugInfo", {
|
|
|
17
17
|
}
|
|
18
18
|
});
|
|
19
19
|
var _canvasHeatmap = _interopRequireWildcard(require("./canvas-heatmap"));
|
|
20
|
-
function
|
|
21
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
20
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
@@ -581,11 +581,11 @@ function callCancelCallbacks(interaction) {
|
|
|
581
581
|
export function abort(interactionId, abortReason) {
|
|
582
582
|
const interaction = interactions.get(interactionId);
|
|
583
583
|
if (interaction != null) {
|
|
584
|
-
var
|
|
584
|
+
var _getConfig0, _getConfig0$experimen;
|
|
585
585
|
callCancelCallbacks(interaction);
|
|
586
586
|
interaction.abortReason = abortReason;
|
|
587
587
|
finishInteraction(interactionId, interaction);
|
|
588
|
-
if ((
|
|
588
|
+
if ((_getConfig0 = getConfig()) !== null && _getConfig0 !== void 0 && (_getConfig0$experimen = _getConfig0.experimentalInteractionMetrics) !== null && _getConfig0$experimen !== void 0 && _getConfig0$experimen.enabled) {
|
|
589
589
|
onExperimentalInteractionComplete(interactionId, interaction);
|
|
590
590
|
remove(interactionId);
|
|
591
591
|
}
|
|
@@ -594,12 +594,12 @@ export function abort(interactionId, abortReason) {
|
|
|
594
594
|
export function abortByNewInteraction(interactionId, interactionName) {
|
|
595
595
|
const interaction = interactions.get(interactionId);
|
|
596
596
|
if (interaction != null) {
|
|
597
|
-
var
|
|
597
|
+
var _getConfig1, _getConfig1$experimen;
|
|
598
598
|
callCancelCallbacks(interaction);
|
|
599
599
|
interaction.abortReason = 'new_interaction';
|
|
600
600
|
interaction.abortedByInteractionName = interactionName;
|
|
601
601
|
finishInteraction(interactionId, interaction);
|
|
602
|
-
if ((
|
|
602
|
+
if ((_getConfig1 = getConfig()) !== null && _getConfig1 !== void 0 && (_getConfig1$experimen = _getConfig1.experimentalInteractionMetrics) !== null && _getConfig1$experimen !== void 0 && _getConfig1$experimen.enabled) {
|
|
603
603
|
onExperimentalInteractionComplete(interactionId, interaction);
|
|
604
604
|
remove(interactionId);
|
|
605
605
|
}
|
|
@@ -607,7 +607,7 @@ export function abortByNewInteraction(interactionId, interactionName) {
|
|
|
607
607
|
}
|
|
608
608
|
export function abortAll(abortReason, abortedByInteractionName) {
|
|
609
609
|
interactions.forEach((interaction, interactionId) => {
|
|
610
|
-
var
|
|
610
|
+
var _getConfig10, _getConfig10$experime;
|
|
611
611
|
const noMoreHolds = interaction.holdActive.size === 0;
|
|
612
612
|
if (!noMoreHolds) {
|
|
613
613
|
callCancelCallbacks(interaction);
|
|
@@ -617,7 +617,7 @@ export function abortAll(abortReason, abortedByInteractionName) {
|
|
|
617
617
|
}
|
|
618
618
|
}
|
|
619
619
|
finishInteraction(interactionId, interaction);
|
|
620
|
-
if ((
|
|
620
|
+
if ((_getConfig10 = getConfig()) !== null && _getConfig10 !== void 0 && (_getConfig10$experime = _getConfig10.experimentalInteractionMetrics) !== null && _getConfig10$experime !== void 0 && _getConfig10$experime.enabled) {
|
|
621
621
|
onExperimentalInteractionComplete(interactionId, interaction);
|
|
622
622
|
remove(interactionId);
|
|
623
623
|
}
|
|
@@ -628,8 +628,8 @@ export function addOnCancelCallback(id, cancelCallback) {
|
|
|
628
628
|
interaction === null || interaction === void 0 ? void 0 : interaction.cancelCallbacks.push(cancelCallback);
|
|
629
629
|
}
|
|
630
630
|
export function addNewInteraction(interactionId, ufoName, type, startTime, rate, labelStack, routeName, trace = null) {
|
|
631
|
-
var
|
|
632
|
-
if ((
|
|
631
|
+
var _getConfig11, _getConfig11$postInte;
|
|
632
|
+
if ((_getConfig11 = getConfig()) !== null && _getConfig11 !== void 0 && (_getConfig11$postInte = _getConfig11.postInteractionLog) !== null && _getConfig11$postInte !== void 0 && _getConfig11$postInte.enabled) {
|
|
633
633
|
postInteractionLog.reset();
|
|
634
634
|
}
|
|
635
635
|
let previousTime = startTime;
|
|
@@ -717,7 +717,7 @@ export function addNewInteraction(interactionId, ufoName, type, startTime, rate,
|
|
|
717
717
|
addHoldByID(interactionId, [], ufoName, ufoName, true);
|
|
718
718
|
}
|
|
719
719
|
if (type === 'transition') {
|
|
720
|
-
var
|
|
720
|
+
var _getConfig12, _getConfig12$experime;
|
|
721
721
|
getVCObserver().start({
|
|
722
722
|
startTime,
|
|
723
723
|
experienceKey: ufoName
|
|
@@ -725,7 +725,7 @@ export function addNewInteraction(interactionId, ufoName, type, startTime, rate,
|
|
|
725
725
|
postInteractionLog.startVCObserver({
|
|
726
726
|
startTime
|
|
727
727
|
});
|
|
728
|
-
if ((
|
|
728
|
+
if ((_getConfig12 = getConfig()) !== null && _getConfig12 !== void 0 && (_getConfig12$experime = _getConfig12.experimentalInteractionMetrics) !== null && _getConfig12$experime !== void 0 && _getConfig12$experime.enabled) {
|
|
729
729
|
experimentalVC.start({
|
|
730
730
|
startTime
|
|
731
731
|
});
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
1
2
|
import { isVCRevisionEnabled } from '../../config';
|
|
2
3
|
import { getPageVisibilityState } from '../../hidden-timing';
|
|
3
4
|
const VCParts = ['25', '50', '75', '80', '85', '90', '95', '98', '99'];
|
|
@@ -33,27 +34,36 @@ export function getVCRevisionsData({
|
|
|
33
34
|
isEventAborted,
|
|
34
35
|
calculatedVC,
|
|
35
36
|
calculatedVCNext,
|
|
36
|
-
experienceKey
|
|
37
|
+
experienceKey,
|
|
38
|
+
ratios
|
|
37
39
|
}) {
|
|
38
40
|
const pageVisibilityUpToTTAI = getPageVisibilityState(interaction.start, interaction.end);
|
|
39
41
|
const isVisiblePageVisibleUpToTTAI = pageVisibilityUpToTTAI === 'visible';
|
|
40
42
|
const shouldHaveVCmetric = isVCClean && !isEventAborted && isVisiblePageVisibleUpToTTAI;
|
|
41
43
|
const availableVCRevisionPayloads = [];
|
|
42
44
|
if (isVCRevisionEnabled('fy25.01', experienceKey)) {
|
|
43
|
-
|
|
45
|
+
const revision = {
|
|
44
46
|
revision: 'fy25.01',
|
|
45
47
|
clean: isVCClean,
|
|
46
48
|
'metric:vc90': shouldHaveVCmetric ? calculatedVC.VC['90'] : null,
|
|
47
49
|
vcDetails: createVCDetails(calculatedVC, shouldHaveVCmetric)
|
|
48
|
-
}
|
|
50
|
+
};
|
|
51
|
+
if (shouldHaveVCmetric && fg('platform_ufo_rev_ratios')) {
|
|
52
|
+
revision.ratios = ratios;
|
|
53
|
+
}
|
|
54
|
+
availableVCRevisionPayloads.push(revision);
|
|
49
55
|
}
|
|
50
56
|
if (isVCRevisionEnabled('fy25.02', experienceKey)) {
|
|
51
|
-
|
|
57
|
+
const revision = {
|
|
52
58
|
revision: 'fy25.02',
|
|
53
59
|
clean: isVCClean,
|
|
54
60
|
'metric:vc90': shouldHaveVCmetric ? calculatedVCNext.VC['90'] : null,
|
|
55
61
|
vcDetails: createVCDetails(calculatedVCNext, shouldHaveVCmetric)
|
|
56
|
-
}
|
|
62
|
+
};
|
|
63
|
+
if (shouldHaveVCmetric && fg('platform_ufo_rev_ratios')) {
|
|
64
|
+
revision.ratios = ratios;
|
|
65
|
+
}
|
|
66
|
+
availableVCRevisionPayloads.push(revision);
|
|
57
67
|
}
|
|
58
68
|
return {
|
|
59
69
|
[`${fullPrefix}vc:rev`]: availableVCRevisionPayloads
|
|
@@ -117,11 +117,7 @@ export class VCObserver {
|
|
|
117
117
|
ratios
|
|
118
118
|
} = rawData;
|
|
119
119
|
const isTTVCv1Disabled = !isVCRevisionEnabled('fy25.01', experienceKey);
|
|
120
|
-
|
|
121
|
-
// NOTE: as part of platform_ufo_add_vc_abort_reason_by_revisions feature,
|
|
122
|
-
// we want to report abort by scroll events the same way as other abort reasons
|
|
123
|
-
// i.e. not have the concept of `abortReason.blocking` anymore
|
|
124
|
-
if (abortReasonInfo !== null && fg('platform_ufo_add_vc_abort_reason_by_revisions')) {
|
|
120
|
+
if (abortReasonInfo !== null) {
|
|
125
121
|
// exposing data to devtools
|
|
126
122
|
try {
|
|
127
123
|
if (devToolsEnabled && !this.isPostInteraction) {
|
|
@@ -148,18 +144,6 @@ export class VCObserver {
|
|
|
148
144
|
});
|
|
149
145
|
}
|
|
150
146
|
return vcAbortedResultWithRevisions;
|
|
151
|
-
} else if (abortReasonInfo !== null && abortReason.blocking) {
|
|
152
|
-
// exposing data to devtools
|
|
153
|
-
try {
|
|
154
|
-
if (devToolsEnabled && !this.isPostInteraction) {
|
|
155
|
-
window.__vcNotAvailableReason = abortReasonInfo;
|
|
156
|
-
}
|
|
157
|
-
} catch (e) {}
|
|
158
|
-
return {
|
|
159
|
-
[`${fullPrefix}vc:state`]: false,
|
|
160
|
-
[`${fullPrefix}vc:abort:reason`]: abortReasonInfo,
|
|
161
|
-
[`${fullPrefix}vc:abort:timestamp`]: abortReason.timestamp
|
|
162
|
-
};
|
|
163
147
|
}
|
|
164
148
|
const ttvcV1Result = isTTVCv1Disabled ? {
|
|
165
149
|
VC: {},
|
|
@@ -346,7 +330,8 @@ export class VCObserver {
|
|
|
346
330
|
VCBox: vcNext.VCBox
|
|
347
331
|
},
|
|
348
332
|
isEventAborted,
|
|
349
|
-
experienceKey
|
|
333
|
+
experienceKey,
|
|
334
|
+
ratios
|
|
350
335
|
});
|
|
351
336
|
const speedIndex = {
|
|
352
337
|
[`ufo:speedIndex`]: isTTVCv1Disabled ? vcNext.VCEntries.speedIndex : VCEntries.speedIndex,
|
|
@@ -11,6 +11,31 @@ export default class AbstractVCCalculatorBase {
|
|
|
11
11
|
return 'rect' in entry.data;
|
|
12
12
|
});
|
|
13
13
|
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Calculate ratios for each element based on their viewport coverage.
|
|
17
|
+
*/
|
|
18
|
+
calculateRatios(filteredEntries) {
|
|
19
|
+
const ratios = {};
|
|
20
|
+
const viewportWidth = getViewportWidth();
|
|
21
|
+
const viewportHeight = getViewportHeight();
|
|
22
|
+
const totalViewportArea = viewportWidth * viewportHeight;
|
|
23
|
+
if (totalViewportArea === 0) {
|
|
24
|
+
return ratios;
|
|
25
|
+
}
|
|
26
|
+
const elementRects = new Map();
|
|
27
|
+
for (const entry of filteredEntries) {
|
|
28
|
+
if ('rect' in entry.data) {
|
|
29
|
+
const viewportEntry = entry.data;
|
|
30
|
+
elementRects.set(viewportEntry.elementName, viewportEntry.rect);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
for (const [elementName, rect] of elementRects) {
|
|
34
|
+
const elementArea = rect.width * rect.height;
|
|
35
|
+
ratios[elementName] = elementArea / totalViewportArea;
|
|
36
|
+
}
|
|
37
|
+
return ratios;
|
|
38
|
+
}
|
|
14
39
|
async calculateBasic(filteredEntries, startTime, stopTime) {
|
|
15
40
|
const percentiles = [25, 50, 75, 80, 85, 90, 95, 98, 99];
|
|
16
41
|
const viewportEntries = this.filterViewportEntries(filteredEntries);
|
|
@@ -122,35 +147,28 @@ export default class AbstractVCCalculatorBase {
|
|
|
122
147
|
});
|
|
123
148
|
let isVCClean;
|
|
124
149
|
let dirtyReason;
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
} else {
|
|
138
|
-
isVCClean = this.isVCClean(filteredEntries);
|
|
139
|
-
if (!isVCClean) {
|
|
140
|
-
return {
|
|
141
|
-
revision: this.revisionNo,
|
|
142
|
-
'metric:vc90': null,
|
|
143
|
-
clean: false
|
|
144
|
-
};
|
|
145
|
-
}
|
|
150
|
+
const getVCCleanStatusResult = this.getVCCleanStatus(filteredEntries);
|
|
151
|
+
isVCClean = getVCCleanStatusResult.isVCClean;
|
|
152
|
+
dirtyReason = getVCCleanStatusResult.dirtyReason;
|
|
153
|
+
if (!isVCClean) {
|
|
154
|
+
return {
|
|
155
|
+
revision: this.revisionNo,
|
|
156
|
+
'metric:vc90': null,
|
|
157
|
+
clean: false,
|
|
158
|
+
abortReason: dirtyReason
|
|
159
|
+
};
|
|
146
160
|
}
|
|
147
161
|
const useDebugInfo = fg('platform_ufo_ttvc_v3_devtool');
|
|
148
162
|
const vcDetails = useDebugInfo ? await this.calculateWithDebugInfo(filteredEntries, startTime, stopTime, isPostInteraction, isVCClean, interactionId, dirtyReason) : await this.calculateBasic(filteredEntries, startTime, stopTime);
|
|
149
|
-
|
|
163
|
+
const result = {
|
|
150
164
|
revision: this.revisionNo,
|
|
151
165
|
clean: true,
|
|
152
166
|
'metric:vc90': (_vcDetails$90$t = vcDetails === null || vcDetails === void 0 ? void 0 : (_vcDetails$ = vcDetails['90']) === null || _vcDetails$ === void 0 ? void 0 : _vcDetails$.t) !== null && _vcDetails$90$t !== void 0 ? _vcDetails$90$t : null,
|
|
153
167
|
vcDetails: vcDetails !== null && vcDetails !== void 0 ? vcDetails : undefined
|
|
154
168
|
};
|
|
169
|
+
if (fg('platform_ufo_rev_ratios')) {
|
|
170
|
+
result.ratios = this.calculateRatios(filteredEntries);
|
|
171
|
+
}
|
|
172
|
+
return result;
|
|
155
173
|
}
|
|
156
174
|
}
|
|
@@ -29,7 +29,7 @@ export default class VCCalculator_FY25_03 extends AbstractVCCalculatorBase {
|
|
|
29
29
|
if (attributeName === 'data-aui-version' && fg('platform_ufo_filter_out_aui_attribute_changes')) {
|
|
30
30
|
return false;
|
|
31
31
|
}
|
|
32
|
-
if (
|
|
32
|
+
if (attributeName === 'data-testid' || attributeName === 'data-vc' || attributeName === 'data-ssr-placeholder' || attributeName === 'data-ssr-placeholder-replace' || attributeName === 'data-vc-nvs' || attributeName === 'data-media-vc-wrapper' || attributeName === 'data-auto-scrollable' || attributeName === 'id' || attributeName === 'tabindex' || NON_VISUAL_ARIA_ATTRIBUTES.includes(attributeName)) {
|
|
33
33
|
return false;
|
|
34
34
|
}
|
|
35
35
|
return true;
|
|
@@ -39,18 +39,6 @@ export default class VCCalculator_FY25_03 extends AbstractVCCalculatorBase {
|
|
|
39
39
|
}
|
|
40
40
|
return true;
|
|
41
41
|
}
|
|
42
|
-
isVCClean(filteredEntries) {
|
|
43
|
-
const hasAbortEvent = filteredEntries.some(entry => {
|
|
44
|
-
if (entry.data.type === 'window:event') {
|
|
45
|
-
const data = entry.data;
|
|
46
|
-
if (ABORTING_WINDOW_EVENT.includes(data.eventType)) {
|
|
47
|
-
return true;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return false;
|
|
51
|
-
});
|
|
52
|
-
return !hasAbortEvent;
|
|
53
|
-
}
|
|
54
42
|
getVCCleanStatus(filteredEntries) {
|
|
55
43
|
let dirtyReason = '';
|
|
56
44
|
const hasAbortEvent = filteredEntries.some(entry => {
|
package/dist/esm/config/index.js
CHANGED
|
@@ -283,8 +283,8 @@ export function getDoNotAbortActivePressInteraction() {
|
|
|
283
283
|
if (!config) {
|
|
284
284
|
return undefined;
|
|
285
285
|
}
|
|
286
|
-
var
|
|
287
|
-
doNotAbortActivePressInteraction =
|
|
286
|
+
var _config0 = config,
|
|
287
|
+
doNotAbortActivePressInteraction = _config0.doNotAbortActivePressInteraction;
|
|
288
288
|
return doNotAbortActivePressInteraction;
|
|
289
289
|
} catch (e) {
|
|
290
290
|
return undefined;
|
|
@@ -297,8 +297,8 @@ export function getDoNotAbortActivePressInteractionOnTransition() {
|
|
|
297
297
|
if (!config) {
|
|
298
298
|
return undefined;
|
|
299
299
|
}
|
|
300
|
-
var
|
|
301
|
-
doNotAbortActivePressInteractionOnTransition =
|
|
300
|
+
var _config1 = config,
|
|
301
|
+
doNotAbortActivePressInteractionOnTransition = _config1.doNotAbortActivePressInteractionOnTransition;
|
|
302
302
|
return doNotAbortActivePressInteractionOnTransition;
|
|
303
303
|
} catch (e) {
|
|
304
304
|
return undefined;
|
|
@@ -659,11 +659,11 @@ function callCancelCallbacks(interaction) {
|
|
|
659
659
|
export function abort(interactionId, abortReason) {
|
|
660
660
|
var interaction = interactions.get(interactionId);
|
|
661
661
|
if (interaction != null) {
|
|
662
|
-
var
|
|
662
|
+
var _getConfig0;
|
|
663
663
|
callCancelCallbacks(interaction);
|
|
664
664
|
interaction.abortReason = abortReason;
|
|
665
665
|
finishInteraction(interactionId, interaction);
|
|
666
|
-
if ((
|
|
666
|
+
if ((_getConfig0 = getConfig()) !== null && _getConfig0 !== void 0 && (_getConfig0 = _getConfig0.experimentalInteractionMetrics) !== null && _getConfig0 !== void 0 && _getConfig0.enabled) {
|
|
667
667
|
onExperimentalInteractionComplete(interactionId, interaction);
|
|
668
668
|
remove(interactionId);
|
|
669
669
|
}
|
|
@@ -672,12 +672,12 @@ export function abort(interactionId, abortReason) {
|
|
|
672
672
|
export function abortByNewInteraction(interactionId, interactionName) {
|
|
673
673
|
var interaction = interactions.get(interactionId);
|
|
674
674
|
if (interaction != null) {
|
|
675
|
-
var
|
|
675
|
+
var _getConfig1;
|
|
676
676
|
callCancelCallbacks(interaction);
|
|
677
677
|
interaction.abortReason = 'new_interaction';
|
|
678
678
|
interaction.abortedByInteractionName = interactionName;
|
|
679
679
|
finishInteraction(interactionId, interaction);
|
|
680
|
-
if ((
|
|
680
|
+
if ((_getConfig1 = getConfig()) !== null && _getConfig1 !== void 0 && (_getConfig1 = _getConfig1.experimentalInteractionMetrics) !== null && _getConfig1 !== void 0 && _getConfig1.enabled) {
|
|
681
681
|
onExperimentalInteractionComplete(interactionId, interaction);
|
|
682
682
|
remove(interactionId);
|
|
683
683
|
}
|
|
@@ -685,7 +685,7 @@ export function abortByNewInteraction(interactionId, interactionName) {
|
|
|
685
685
|
}
|
|
686
686
|
export function abortAll(abortReason, abortedByInteractionName) {
|
|
687
687
|
interactions.forEach(function (interaction, interactionId) {
|
|
688
|
-
var
|
|
688
|
+
var _getConfig10;
|
|
689
689
|
var noMoreHolds = interaction.holdActive.size === 0;
|
|
690
690
|
if (!noMoreHolds) {
|
|
691
691
|
callCancelCallbacks(interaction);
|
|
@@ -695,7 +695,7 @@ export function abortAll(abortReason, abortedByInteractionName) {
|
|
|
695
695
|
}
|
|
696
696
|
}
|
|
697
697
|
finishInteraction(interactionId, interaction);
|
|
698
|
-
if ((
|
|
698
|
+
if ((_getConfig10 = getConfig()) !== null && _getConfig10 !== void 0 && (_getConfig10 = _getConfig10.experimentalInteractionMetrics) !== null && _getConfig10 !== void 0 && _getConfig10.enabled) {
|
|
699
699
|
onExperimentalInteractionComplete(interactionId, interaction);
|
|
700
700
|
remove(interactionId);
|
|
701
701
|
}
|
|
@@ -706,9 +706,9 @@ export function addOnCancelCallback(id, cancelCallback) {
|
|
|
706
706
|
interaction === null || interaction === void 0 || interaction.cancelCallbacks.push(cancelCallback);
|
|
707
707
|
}
|
|
708
708
|
export function addNewInteraction(interactionId, ufoName, type, startTime, rate, labelStack, routeName) {
|
|
709
|
-
var
|
|
709
|
+
var _getConfig11;
|
|
710
710
|
var trace = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;
|
|
711
|
-
if ((
|
|
711
|
+
if ((_getConfig11 = getConfig()) !== null && _getConfig11 !== void 0 && (_getConfig11 = _getConfig11.postInteractionLog) !== null && _getConfig11 !== void 0 && _getConfig11.enabled) {
|
|
712
712
|
postInteractionLog.reset();
|
|
713
713
|
}
|
|
714
714
|
var previousTime = startTime;
|
|
@@ -796,7 +796,7 @@ export function addNewInteraction(interactionId, ufoName, type, startTime, rate,
|
|
|
796
796
|
addHoldByID(interactionId, [], ufoName, ufoName, true);
|
|
797
797
|
}
|
|
798
798
|
if (type === 'transition') {
|
|
799
|
-
var
|
|
799
|
+
var _getConfig12;
|
|
800
800
|
getVCObserver().start({
|
|
801
801
|
startTime: startTime,
|
|
802
802
|
experienceKey: ufoName
|
|
@@ -804,7 +804,7 @@ export function addNewInteraction(interactionId, ufoName, type, startTime, rate,
|
|
|
804
804
|
postInteractionLog.startVCObserver({
|
|
805
805
|
startTime: startTime
|
|
806
806
|
});
|
|
807
|
-
if ((
|
|
807
|
+
if ((_getConfig12 = getConfig()) !== null && _getConfig12 !== void 0 && (_getConfig12 = _getConfig12.experimentalInteractionMetrics) !== null && _getConfig12 !== void 0 && _getConfig12.enabled) {
|
|
808
808
|
experimentalVC.start({
|
|
809
809
|
startTime: startTime
|
|
810
810
|
});
|