@atlaskit/react-ufo 2.14.2 → 2.15.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 +20 -0
- package/dist/cjs/create-payload/index.js +11 -0
- package/dist/cjs/experience-trace-id-context/index.js +5 -1
- package/dist/cjs/segment/segment.js +7 -1
- package/dist/cjs/vc/vc-observer/heatmap/heatmap.js +275 -0
- package/dist/cjs/vc/vc-observer/index.js +133 -29
- package/dist/cjs/vc/vc-observer/observers/ssr-placeholders/index.js +16 -27
- package/dist/cjs/vc/vc-observer/revisions/ViewportUpdateClassifier.js +52 -0
- package/dist/cjs/vc/vc-observer/revisions/fy24_01.js +39 -0
- package/dist/cjs/vc/vc-observer/revisions/fy25_01.js +39 -0
- package/dist/cjs/vc/vc-observer/revisions/revisions.js +23 -0
- package/dist/cjs/vc/vc-observer/revisions/types.js +5 -0
- package/dist/es2019/create-payload/index.js +11 -0
- package/dist/es2019/experience-trace-id-context/index.js +4 -0
- package/dist/es2019/segment/segment.js +11 -3
- package/dist/es2019/vc/vc-observer/heatmap/heatmap.js +238 -0
- package/dist/es2019/vc/vc-observer/index.js +115 -7
- package/dist/es2019/vc/vc-observer/observers/ssr-placeholders/index.js +16 -27
- package/dist/es2019/vc/vc-observer/revisions/ViewportUpdateClassifier.js +35 -0
- package/dist/es2019/vc/vc-observer/revisions/fy24_01.js +21 -0
- package/dist/es2019/vc/vc-observer/revisions/fy25_01.js +21 -0
- package/dist/es2019/vc/vc-observer/revisions/revisions.js +19 -0
- package/dist/es2019/vc/vc-observer/revisions/types.js +1 -0
- package/dist/esm/create-payload/index.js +11 -0
- package/dist/esm/experience-trace-id-context/index.js +4 -0
- package/dist/esm/segment/segment.js +7 -1
- package/dist/esm/vc/vc-observer/heatmap/heatmap.js +268 -0
- package/dist/esm/vc/vc-observer/index.js +133 -29
- package/dist/esm/vc/vc-observer/observers/ssr-placeholders/index.js +16 -27
- package/dist/esm/vc/vc-observer/revisions/ViewportUpdateClassifier.js +45 -0
- package/dist/esm/vc/vc-observer/revisions/fy24_01.js +32 -0
- package/dist/esm/vc/vc-observer/revisions/fy25_01.js +32 -0
- package/dist/esm/vc/vc-observer/revisions/revisions.js +17 -0
- package/dist/esm/vc/vc-observer/revisions/types.js +1 -0
- package/dist/types/common/vc/types.d.ts +28 -9
- package/dist/types/create-payload/index.d.ts +16 -0
- package/dist/types/experience-trace-id-context/index.d.ts +1 -0
- package/dist/types/interaction-ignore/ufo-interaction-ignore.d.ts +2 -2
- package/dist/types/label/UFOLabel.d.ts +2 -2
- package/dist/types/load-hold/UFOLoadHold.d.ts +2 -2
- package/dist/types/placeholder/Placeholder.d.ts +2 -2
- package/dist/types/placeholder/loosely-lazy/lazy-suspense.d.ts +2 -2
- package/dist/types/segment/segment-highlight.d.ts +2 -2
- package/dist/types/segment/segment.d.ts +2 -2
- package/dist/types/vc/vc-observer/heatmap/heatmap.d.ts +75 -0
- package/dist/types/vc/vc-observer/index.d.ts +6 -1
- package/dist/types/vc/vc-observer/media-wrapper/MediaWrapper.d.ts +1 -1
- package/dist/types/vc/vc-observer/revisions/ViewportUpdateClassifier.d.ts +25 -0
- package/dist/types/vc/vc-observer/revisions/fy24_01.d.ts +11 -0
- package/dist/types/vc/vc-observer/revisions/fy25_01.d.ts +13 -0
- package/dist/types/vc/vc-observer/revisions/revisions.d.ts +2 -0
- package/dist/types/vc/vc-observer/revisions/types.d.ts +5 -0
- package/dist/types-ts4.5/common/vc/types.d.ts +28 -9
- package/dist/types-ts4.5/create-payload/index.d.ts +16 -0
- package/dist/types-ts4.5/experience-trace-id-context/index.d.ts +1 -0
- package/dist/types-ts4.5/interaction-ignore/ufo-interaction-ignore.d.ts +2 -2
- package/dist/types-ts4.5/label/UFOLabel.d.ts +2 -2
- package/dist/types-ts4.5/load-hold/UFOLoadHold.d.ts +2 -2
- package/dist/types-ts4.5/placeholder/Placeholder.d.ts +2 -2
- package/dist/types-ts4.5/placeholder/loosely-lazy/lazy-suspense.d.ts +2 -2
- package/dist/types-ts4.5/segment/segment-highlight.d.ts +2 -2
- package/dist/types-ts4.5/segment/segment.d.ts +2 -2
- package/dist/types-ts4.5/vc/vc-observer/heatmap/heatmap.d.ts +75 -0
- package/dist/types-ts4.5/vc/vc-observer/index.d.ts +16 -1
- package/dist/types-ts4.5/vc/vc-observer/media-wrapper/MediaWrapper.d.ts +1 -1
- package/dist/types-ts4.5/vc/vc-observer/revisions/ViewportUpdateClassifier.d.ts +25 -0
- package/dist/types-ts4.5/vc/vc-observer/revisions/fy24_01.d.ts +11 -0
- package/dist/types-ts4.5/vc/vc-observer/revisions/fy25_01.d.ts +13 -0
- package/dist/types-ts4.5/vc/vc-observer/revisions/revisions.d.ts +2 -0
- package/dist/types-ts4.5/vc/vc-observer/revisions/types.d.ts +5 -0
- package/package.json +17 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @atlaskit/ufo-interaction-ignore
|
|
2
2
|
|
|
3
|
+
## 2.15.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#115462](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/115462)
|
|
8
|
+
[`17a3ace9d5f67`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/17a3ace9d5f67) -
|
|
9
|
+
Moved addSegment to useEffect to prevent it added multiple times when running on concurrent mode
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies
|
|
14
|
+
|
|
15
|
+
## 2.14.3
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- [#112416](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/112416)
|
|
20
|
+
[`7bc761ae449f4`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/7bc761ae449f4) -
|
|
21
|
+
VC ratio calculation precision fix
|
|
22
|
+
|
|
3
23
|
## 2.14.2
|
|
4
24
|
|
|
5
25
|
### Patch Changes
|
|
@@ -222,6 +222,16 @@ var getVCMetrics = function getVCMetrics(interaction) {
|
|
|
222
222
|
if (interactionStatus.originalInteractionStatus !== 'SUCCEEDED' || pageVisibilityUpToTTAI !== 'visible') {
|
|
223
223
|
return result;
|
|
224
224
|
}
|
|
225
|
+
if ((0, _platformFeatureFlags.fg)('ufo_vc_multiheatmap')) {
|
|
226
|
+
var _result;
|
|
227
|
+
(_result = result["".concat(prefix, ":vc:rev")]) === null || _result === void 0 || _result.forEach(function (element) {
|
|
228
|
+
var _element$vcDetails;
|
|
229
|
+
if ((_element$vcDetails = element.vcDetails) !== null && _element$vcDetails !== void 0 && (_element$vcDetails = _element$vcDetails['90']) !== null && _element$vcDetails !== void 0 && _element$vcDetails.t) {
|
|
230
|
+
var _element$vcDetails$;
|
|
231
|
+
element['metric:vc90'] = (_element$vcDetails$ = element.vcDetails['90']) === null || _element$vcDetails$ === void 0 ? void 0 : _element$vcDetails$.t;
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
}
|
|
225
235
|
return _objectSpread(_objectSpread({}, result), {}, {
|
|
226
236
|
'metric:vc90': VC['90']
|
|
227
237
|
});
|
|
@@ -622,6 +632,7 @@ function getPayloadSize(payload) {
|
|
|
622
632
|
return Math.round(new TextEncoder().encode(JSON.stringify(payload)).length / 1024);
|
|
623
633
|
}
|
|
624
634
|
function getStylesheetMetrics() {
|
|
635
|
+
// eslint-disable-next-line @atlaskit/platform/ensure-feature-flag-prefix
|
|
625
636
|
if (!(0, _platformFeatureFlags.fg)('ufo_capture_stylesheet_metrics')) {
|
|
626
637
|
return {};
|
|
627
638
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.setInteractionActiveTrace = exports.setActiveTrace = exports.getActiveTraceHttpRequestHeaders = exports.getActiveTrace = exports.generateSpanId = exports.clearActiveTrace = void 0;
|
|
6
|
+
exports.setInteractionActiveTrace = exports.setActiveTrace = exports.getActiveTraceHttpRequestHeaders = exports.getActiveTraceAsQueryParams = exports.getActiveTrace = exports.generateSpanId = exports.clearActiveTrace = void 0;
|
|
7
7
|
var _makeTraceHttpRequestHeaders = require("./utils/make-trace-http-request-headers");
|
|
8
8
|
var state = {
|
|
9
9
|
context: null
|
|
@@ -37,4 +37,8 @@ var getActiveTraceHttpRequestHeaders = exports.getActiveTraceHttpRequestHeaders
|
|
|
37
37
|
traceId = _state$context.traceId,
|
|
38
38
|
spanId = _state$context.spanId;
|
|
39
39
|
return (0, _makeTraceHttpRequestHeaders.makeTraceHttpRequestHeaders)(traceId, spanId);
|
|
40
|
+
};
|
|
41
|
+
var getActiveTraceAsQueryParams = exports.getActiveTraceAsQueryParams = function getActiveTraceAsQueryParams(_url) {
|
|
42
|
+
var traceHeaders = getActiveTraceHttpRequestHeaders(_url);
|
|
43
|
+
return traceHeaders ? new URLSearchParams(traceHeaders).toString().toLowerCase() : null;
|
|
40
44
|
};
|
|
@@ -11,6 +11,7 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
|
|
|
11
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
12
|
var _scheduler = require("scheduler");
|
|
13
13
|
var _uuid = require("uuid");
|
|
14
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
14
15
|
var _coinflip = _interopRequireDefault(require("../coinflip"));
|
|
15
16
|
var _config = require("../config");
|
|
16
17
|
var _experienceTraceIdContext = require("../experience-trace-id-context");
|
|
@@ -54,7 +55,9 @@ function UFOSegment(_ref) {
|
|
|
54
55
|
}, [parentContext, segmentName, segmentId]);
|
|
55
56
|
var interactionId = (0, _react.useContext)(_interactionIdContext.default);
|
|
56
57
|
var interactionContext = (0, _react.useMemo)(function () {
|
|
57
|
-
(0,
|
|
58
|
+
if (!(0, _platformFeatureFlags.fg)('platform-ufo-add-segment-use-effect')) {
|
|
59
|
+
(0, _interactionMetrics.addSegment)(labelStack);
|
|
60
|
+
}
|
|
58
61
|
var lastCompleteEndTime = 0;
|
|
59
62
|
function complete() {
|
|
60
63
|
var endTime = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : performance.now();
|
|
@@ -233,6 +236,9 @@ function UFOSegment(_ref) {
|
|
|
233
236
|
}
|
|
234
237
|
}, [interactionContext]);
|
|
235
238
|
(0, _react.useEffect)(function () {
|
|
239
|
+
if ((0, _platformFeatureFlags.fg)('platform-ufo-add-segment-use-effect')) {
|
|
240
|
+
(0, _interactionMetrics.addSegment)(labelStack);
|
|
241
|
+
}
|
|
236
242
|
return function () {
|
|
237
243
|
(0, _interactionMetrics.removeSegment)(labelStack);
|
|
238
244
|
};
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.MultiRevisionHeatmap = void 0;
|
|
8
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
+
var _objectDestructuringEmpty2 = _interopRequireDefault(require("@babel/runtime/helpers/objectDestructuringEmpty"));
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
var UNUSED_SECTOR = 0;
|
|
14
|
+
var MultiRevisionHeatmap = exports.MultiRevisionHeatmap = /*#__PURE__*/function () {
|
|
15
|
+
function MultiRevisionHeatmap(_ref) {
|
|
16
|
+
var _this = this;
|
|
17
|
+
var viewport = _ref.viewport,
|
|
18
|
+
revisions = _ref.revisions,
|
|
19
|
+
arraySize = _ref.arraySize,
|
|
20
|
+
devToolsEnabled = _ref.devToolsEnabled;
|
|
21
|
+
(0, _classCallCheck2.default)(this, MultiRevisionHeatmap);
|
|
22
|
+
(0, _defineProperty2.default)(this, "arraySize", {
|
|
23
|
+
w: 200,
|
|
24
|
+
h: 200
|
|
25
|
+
});
|
|
26
|
+
(0, _defineProperty2.default)(this, "mapPixelsToHeatmap", function (left, top, width, height) {
|
|
27
|
+
var _this$viewport = _this.viewport,
|
|
28
|
+
w = _this$viewport.w,
|
|
29
|
+
h = _this$viewport.h;
|
|
30
|
+
var l = Math.floor(left / w * _this.arraySize.w);
|
|
31
|
+
var t = Math.floor(top / h * _this.arraySize.h);
|
|
32
|
+
var r = Math.ceil((left + width) / w * _this.arraySize.w);
|
|
33
|
+
var b = Math.ceil((top + height) / h * _this.arraySize.h);
|
|
34
|
+
|
|
35
|
+
// correct values to min - 0, max - arraySize
|
|
36
|
+
var result = {
|
|
37
|
+
l: Math.max(0, l),
|
|
38
|
+
t: Math.max(0, t),
|
|
39
|
+
r: Math.min(_this.arraySize.w, r),
|
|
40
|
+
b: Math.min(_this.arraySize.h, b)
|
|
41
|
+
};
|
|
42
|
+
return result;
|
|
43
|
+
});
|
|
44
|
+
(0, _defineProperty2.default)(this, "getElementRatio", function (mappedValues) {
|
|
45
|
+
var r = mappedValues.r,
|
|
46
|
+
l = mappedValues.l,
|
|
47
|
+
b = mappedValues.b,
|
|
48
|
+
t = mappedValues.t;
|
|
49
|
+
return (r - l) * (b - t) / (_this.arraySize.w * _this.arraySize.h);
|
|
50
|
+
});
|
|
51
|
+
this.viewport = viewport;
|
|
52
|
+
this.revisions = revisions;
|
|
53
|
+
if (arraySize) {
|
|
54
|
+
this.arraySize = arraySize;
|
|
55
|
+
}
|
|
56
|
+
this.heatmaps = new Array(revisions.length);
|
|
57
|
+
this.componentsLogs = new Array(revisions.length);
|
|
58
|
+
this.vcRatios = new Array(revisions.length);
|
|
59
|
+
this.devToolsEnabled = devToolsEnabled || false;
|
|
60
|
+
revisions.forEach(function (_ref2, i) {
|
|
61
|
+
(0, _objectDestructuringEmpty2.default)(_ref2);
|
|
62
|
+
_this.heatmaps[i] = _this.getCleanHeatmap();
|
|
63
|
+
_this.componentsLogs[i] = {};
|
|
64
|
+
_this.vcRatios[i] = {};
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return (0, _createClass2.default)(MultiRevisionHeatmap, [{
|
|
68
|
+
key: "handleUpdate",
|
|
69
|
+
value: function handleUpdate(_ref3) {
|
|
70
|
+
var _this2 = this;
|
|
71
|
+
var time = _ref3.time,
|
|
72
|
+
type = _ref3.type,
|
|
73
|
+
classification = _ref3.classification,
|
|
74
|
+
intersectionRect = _ref3.intersectionRect,
|
|
75
|
+
element = _ref3.element,
|
|
76
|
+
targetName = _ref3.targetName,
|
|
77
|
+
ignoreReason = _ref3.ignoreReason,
|
|
78
|
+
onError = _ref3.onError;
|
|
79
|
+
var mappedValues = this.mapPixelsToHeatmap(intersectionRect.left, intersectionRect.top, intersectionRect.width, intersectionRect.height);
|
|
80
|
+
var result = this.applyChangesToHeatMap(mappedValues, time, classification);
|
|
81
|
+
if (result !== true) {
|
|
82
|
+
onError(result);
|
|
83
|
+
}
|
|
84
|
+
var componentRatio = this.getElementRatio(mappedValues);
|
|
85
|
+
this.revisions.forEach(function (_, i) {
|
|
86
|
+
if (classification[i]) {
|
|
87
|
+
_this2.vcRatios[i][targetName] = componentRatio;
|
|
88
|
+
}
|
|
89
|
+
if (!_this2.componentsLogs[i][time]) {
|
|
90
|
+
_this2.componentsLogs[i][time] = [];
|
|
91
|
+
}
|
|
92
|
+
_this2.componentsLogs[i][time].push({
|
|
93
|
+
__debug__element: _this2.devToolsEnabled ? new WeakRef(element) : null,
|
|
94
|
+
intersectionRect: intersectionRect,
|
|
95
|
+
targetName: targetName,
|
|
96
|
+
ignoreReason: ignoreReason
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}, {
|
|
101
|
+
key: "getData",
|
|
102
|
+
value: function getData() {
|
|
103
|
+
return {
|
|
104
|
+
heatmaps: this.heatmaps
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}, {
|
|
108
|
+
key: "getPayloadShapedData",
|
|
109
|
+
value: function getPayloadShapedData(args) {
|
|
110
|
+
var result = this.processData(args);
|
|
111
|
+
var payload = this.revisions.map(function (rev, i) {
|
|
112
|
+
var vcDetails = {};
|
|
113
|
+
args.VCParts.forEach(function (VCPart) {
|
|
114
|
+
vcDetails[VCPart] = {
|
|
115
|
+
t: result[i].VC[VCPart] || 0,
|
|
116
|
+
e: Array.from(result[i].VCBox[VCPart] || [])
|
|
117
|
+
};
|
|
118
|
+
});
|
|
119
|
+
return {
|
|
120
|
+
revision: rev.name,
|
|
121
|
+
vcDetails: vcDetails,
|
|
122
|
+
clean: args.clean,
|
|
123
|
+
'metric:vc90': null // will be set or not in the payload generator
|
|
124
|
+
};
|
|
125
|
+
});
|
|
126
|
+
return payload;
|
|
127
|
+
}
|
|
128
|
+
}, {
|
|
129
|
+
key: "processData",
|
|
130
|
+
value: function processData(_ref4) {
|
|
131
|
+
var _this3 = this;
|
|
132
|
+
var VCParts = _ref4.VCParts,
|
|
133
|
+
_ref4$ssr = _ref4.ssr,
|
|
134
|
+
ssr = _ref4$ssr === void 0 ? UNUSED_SECTOR : _ref4$ssr;
|
|
135
|
+
return this.heatmaps.map(function (heatmap, i) {
|
|
136
|
+
var lastUpdate = {};
|
|
137
|
+
var totalPainted = 0;
|
|
138
|
+
var componentsLog = _this3.componentsLogs[i];
|
|
139
|
+
if (ssr !== UNUSED_SECTOR) {
|
|
140
|
+
var _window$document;
|
|
141
|
+
var element = {
|
|
142
|
+
__debug__element: new WeakRef((_window$document = window.document) === null || _window$document === void 0 ? void 0 : _window$document.body),
|
|
143
|
+
intersectionRect: {
|
|
144
|
+
top: 0,
|
|
145
|
+
left: 0,
|
|
146
|
+
right: 0,
|
|
147
|
+
bottom: 0,
|
|
148
|
+
x: 0,
|
|
149
|
+
y: 0,
|
|
150
|
+
width: _this3.viewport.w,
|
|
151
|
+
height: _this3.viewport.h,
|
|
152
|
+
toJSON: function toJSON() {
|
|
153
|
+
return {};
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
targetName: 'SSR'
|
|
157
|
+
};
|
|
158
|
+
if (!componentsLog[ssr]) {
|
|
159
|
+
componentsLog[ssr] = [];
|
|
160
|
+
}
|
|
161
|
+
componentsLog[ssr].push(element);
|
|
162
|
+
}
|
|
163
|
+
for (var _i = 0; _i < heatmap.length; _i++) {
|
|
164
|
+
var rounded = Math.floor(heatmap[_i] === UNUSED_SECTOR && ssr !== UNUSED_SECTOR ? ssr : heatmap[_i]);
|
|
165
|
+
totalPainted += rounded !== UNUSED_SECTOR ? 1 : 0;
|
|
166
|
+
if (rounded !== UNUSED_SECTOR) {
|
|
167
|
+
lastUpdate[rounded] = lastUpdate[rounded] ? lastUpdate[rounded] + 1 : 1;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
var entries = Object.entries(lastUpdate).map(function (a) {
|
|
171
|
+
return [parseInt(a[0], 10), a[1]];
|
|
172
|
+
}).sort(function (a, b) {
|
|
173
|
+
return a[0] > b[0] ? 1 : -1;
|
|
174
|
+
});
|
|
175
|
+
var VC = MultiRevisionHeatmap.makeVCReturnObj(VCParts);
|
|
176
|
+
var VCBox = MultiRevisionHeatmap.makeVCReturnObj(VCParts);
|
|
177
|
+
entries.reduce(function () {
|
|
178
|
+
var acc = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
179
|
+
var v = arguments.length > 1 ? arguments[1] : undefined;
|
|
180
|
+
var VCRatio = v[1] / totalPainted + acc;
|
|
181
|
+
var time = v[0];
|
|
182
|
+
VCParts.forEach(function (value) {
|
|
183
|
+
if ((VC[value] === null || VC[value] === undefined) && VCRatio >= value / 100) {
|
|
184
|
+
var _componentsLog$time;
|
|
185
|
+
VC[value] = time;
|
|
186
|
+
VCBox[value] = new Set();
|
|
187
|
+
(_componentsLog$time = componentsLog[time]) === null || _componentsLog$time === void 0 || _componentsLog$time.forEach(function (v) {
|
|
188
|
+
var _VCBox$value;
|
|
189
|
+
return (_VCBox$value = VCBox[value]) === null || _VCBox$value === void 0 ? void 0 : _VCBox$value.add(v.targetName);
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
return VCRatio;
|
|
194
|
+
}, 0);
|
|
195
|
+
var VCEntries = entries.reduce(function (acc, _ref5, i) {
|
|
196
|
+
var _acc$abs, _componentsLog$timest;
|
|
197
|
+
var _ref6 = (0, _slicedToArray2.default)(_ref5, 2),
|
|
198
|
+
timestamp = _ref6[0],
|
|
199
|
+
entryPainted = _ref6[1];
|
|
200
|
+
var currentlyPainted = entryPainted + (((_acc$abs = acc.abs[i - 1]) === null || _acc$abs === void 0 ? void 0 : _acc$abs[1]) || 0);
|
|
201
|
+
var currentlyPaintedRatio = Math.round(currentlyPainted / totalPainted * 1000) / 10;
|
|
202
|
+
var logEntry = (_componentsLog$timest = componentsLog[timestamp]) === null || _componentsLog$timest === void 0 ? void 0 : _componentsLog$timest.map(function (v) {
|
|
203
|
+
return v.targetName;
|
|
204
|
+
});
|
|
205
|
+
acc.abs.push([timestamp, currentlyPainted]);
|
|
206
|
+
acc.rel.push({
|
|
207
|
+
time: timestamp,
|
|
208
|
+
vc: currentlyPaintedRatio,
|
|
209
|
+
elements: logEntry
|
|
210
|
+
});
|
|
211
|
+
return acc;
|
|
212
|
+
}, {
|
|
213
|
+
abs: [],
|
|
214
|
+
rel: []
|
|
215
|
+
});
|
|
216
|
+
return {
|
|
217
|
+
VC: VC,
|
|
218
|
+
VCBox: VCBox,
|
|
219
|
+
VCEntries: VCEntries,
|
|
220
|
+
totalPainted: totalPainted
|
|
221
|
+
};
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
}, {
|
|
225
|
+
key: "applyChangesToHeatMap",
|
|
226
|
+
value: function applyChangesToHeatMap(a, time, classification) {
|
|
227
|
+
var l = a.l,
|
|
228
|
+
t = a.t,
|
|
229
|
+
r = a.r,
|
|
230
|
+
b = a.b;
|
|
231
|
+
var size = classification.length;
|
|
232
|
+
for (var row = t; row < b; row++) {
|
|
233
|
+
if (this.heatmaps[0][row] === undefined) {
|
|
234
|
+
try {
|
|
235
|
+
return {
|
|
236
|
+
error: "index - ".concat(row),
|
|
237
|
+
time: time
|
|
238
|
+
};
|
|
239
|
+
} catch (e) {
|
|
240
|
+
return {
|
|
241
|
+
error: 'row error',
|
|
242
|
+
time: time
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
} else {
|
|
246
|
+
for (var heatmapIndex = 0; heatmapIndex < size; heatmapIndex++) {
|
|
247
|
+
if (classification[heatmapIndex]) {
|
|
248
|
+
this.heatmaps[heatmapIndex].fill(time, this.getIndex(l, row), this.getIndex(r, row));
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return true;
|
|
254
|
+
}
|
|
255
|
+
}, {
|
|
256
|
+
key: "getIndex",
|
|
257
|
+
value: function getIndex(x, y) {
|
|
258
|
+
return x + this.arraySize.w * y;
|
|
259
|
+
}
|
|
260
|
+
}, {
|
|
261
|
+
key: "getCleanHeatmap",
|
|
262
|
+
value: function getCleanHeatmap() {
|
|
263
|
+
return new Uint32Array(this.arraySize.w * this.arraySize.h);
|
|
264
|
+
}
|
|
265
|
+
}], [{
|
|
266
|
+
key: "makeVCReturnObj",
|
|
267
|
+
value: function makeVCReturnObj(VCParts) {
|
|
268
|
+
var vc = {};
|
|
269
|
+
VCParts.forEach(function (v) {
|
|
270
|
+
vc[v] = null;
|
|
271
|
+
});
|
|
272
|
+
return vc;
|
|
273
|
+
}
|
|
274
|
+
}]);
|
|
275
|
+
}();
|
|
@@ -13,7 +13,9 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
13
13
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
14
14
|
var _attachAbortListeners = require("./attachAbortListeners");
|
|
15
15
|
var _getViewport = require("./getViewport");
|
|
16
|
+
var _heatmap = require("./heatmap/heatmap");
|
|
16
17
|
var _observers = require("./observers");
|
|
18
|
+
var _revisions = require("./revisions/revisions");
|
|
17
19
|
var _excluded = ["__debug__element"];
|
|
18
20
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
19
21
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
@@ -54,6 +56,7 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
|
|
|
54
56
|
});
|
|
55
57
|
/* heatmap */
|
|
56
58
|
(0, _defineProperty2.default)(this, "arraySize", 0);
|
|
59
|
+
(0, _defineProperty2.default)(this, "multiHeatmap", null);
|
|
57
60
|
(0, _defineProperty2.default)(this, "componentsLog", {});
|
|
58
61
|
(0, _defineProperty2.default)(this, "vcRatios", {});
|
|
59
62
|
(0, _defineProperty2.default)(this, "active", false);
|
|
@@ -85,6 +88,7 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
|
|
|
85
88
|
abortReason: _objectSpread({}, _this.abortReason),
|
|
86
89
|
heatmap: _this.heatmap,
|
|
87
90
|
heatmapNext: _this.heatmapNext,
|
|
91
|
+
multiHeatmap: _this.multiHeatmap,
|
|
88
92
|
outOfBoundaryInfo: _this.outOfBoundaryInfo,
|
|
89
93
|
totalTime: Math.round(_this.totalTime + _this.observers.getTotalTime()),
|
|
90
94
|
componentsLog: _objectSpread({}, _this.componentsLog),
|
|
@@ -117,7 +121,8 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
|
|
|
117
121
|
componentsLog = rawData.componentsLog,
|
|
118
122
|
viewport = rawData.viewport,
|
|
119
123
|
devToolsEnabled = rawData.devToolsEnabled,
|
|
120
|
-
ratios = rawData.ratios
|
|
124
|
+
ratios = rawData.ratios,
|
|
125
|
+
multiHeatmap = rawData.multiHeatmap;
|
|
121
126
|
if (abortReasonInfo !== null && abortReason.blocking) {
|
|
122
127
|
// exposing data to devtools
|
|
123
128
|
try {
|
|
@@ -153,6 +158,7 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
|
|
|
153
158
|
/* empty */
|
|
154
159
|
}
|
|
155
160
|
var _componentsLog = {};
|
|
161
|
+
// eslint-disable-next-line @atlaskit/platform/ensure-feature-flag-prefix
|
|
156
162
|
if ((0, _platformFeatureFlags.fg)('ufo-remove-vc-component-observations-after-ttai')) {
|
|
157
163
|
Object.entries(_this.componentsLog).forEach(function (_ref5) {
|
|
158
164
|
var _ref6 = (0, _slicedToArray2.default)(_ref5, 2),
|
|
@@ -209,9 +215,30 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
|
|
|
209
215
|
tti: tti,
|
|
210
216
|
ttai: stop - start
|
|
211
217
|
},
|
|
218
|
+
start: start,
|
|
219
|
+
stop: stop,
|
|
212
220
|
heatmap: heatmap,
|
|
213
221
|
ratios: ratios
|
|
214
222
|
};
|
|
223
|
+
window.__vcNext = {
|
|
224
|
+
entries: vcNext.VCEntries.rel,
|
|
225
|
+
log: componentsLog,
|
|
226
|
+
metrics: {
|
|
227
|
+
'75': vcNext.VC['75'],
|
|
228
|
+
'80': vcNext.VC['80'],
|
|
229
|
+
'85': vcNext.VC['85'],
|
|
230
|
+
'90': vcNext.VC['90'],
|
|
231
|
+
'95': vcNext.VC['95'],
|
|
232
|
+
'98': vcNext.VC['98'],
|
|
233
|
+
'99': vcNext.VC['99'],
|
|
234
|
+
tti: tti,
|
|
235
|
+
ttai: stop - start
|
|
236
|
+
},
|
|
237
|
+
start: start,
|
|
238
|
+
stop: stop,
|
|
239
|
+
heatmap: heatmapNext,
|
|
240
|
+
ratios: ratios
|
|
241
|
+
};
|
|
215
242
|
|
|
216
243
|
// Emitting a custom event to make it available in the Chrome extension
|
|
217
244
|
window.dispatchEvent(new CustomEvent('vcReady', {
|
|
@@ -224,12 +251,36 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
|
|
|
224
251
|
} catch (e) {
|
|
225
252
|
/* do nothing */
|
|
226
253
|
}
|
|
227
|
-
|
|
254
|
+
var isMultiHeatmapEnabled = (0, _platformFeatureFlags.fg)('ufo_vc_multiheatmap');
|
|
255
|
+
var revisionsData = isMultiHeatmapEnabled && multiHeatmap !== null ? (0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:rev"), multiHeatmap.getPayloadShapedData({
|
|
256
|
+
VCParts: VCObserver.VCParts.map(function (v) {
|
|
257
|
+
return parseInt(v);
|
|
258
|
+
}),
|
|
259
|
+
ssr: ssr,
|
|
260
|
+
clean: !abortReasonInfo
|
|
261
|
+
})) : null;
|
|
262
|
+
// eslint-disable-next-line @atlaskit/platform/ensure-feature-flag-prefix
|
|
263
|
+
var isCalcSpeedIndexEnabled = (0, _platformFeatureFlags.fg)('ufo-calc-speed-index');
|
|
264
|
+
return _objectSpread(_objectSpread(_objectSpread((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({
|
|
228
265
|
'metrics:vc': VC
|
|
229
|
-
}, "".concat(fullPrefix, "vc:state"), true), "".concat(fullPrefix, "vc:clean"), !abortReasonInfo), "".concat(fullPrefix, "vc:dom"), VCBox), "".concat(fullPrefix, "vc:updates"), VCEntries.rel.slice(0, 50)), "".concat(fullPrefix, "vc:size"), viewport), "".concat(fullPrefix, "vc:time"), Math.round(totalTime + (stopTime - startTime))), "".concat(fullPrefix, "vc:total"), totalPainted), "".concat(fullPrefix, "vc:ratios"), ratios), outOfBoundary), {}, (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:next"), vcNext.VC), "".concat(fullPrefix, "vc:next:updates"), vcNext.VCEntries.rel.slice(0, 50)), "".concat(fullPrefix, "vc:next:dom"), vcNext.VCBox), "".concat(fullPrefix, "vc:ignored"), _this.getIgnoredElements(componentsLog)));
|
|
266
|
+
}, "".concat(fullPrefix, "vc:state"), true), "".concat(fullPrefix, "vc:clean"), !abortReasonInfo), "".concat(fullPrefix, "vc:dom"), VCBox), "".concat(fullPrefix, "vc:updates"), VCEntries.rel.slice(0, 50)), "".concat(fullPrefix, "vc:size"), viewport), "".concat(fullPrefix, "vc:time"), Math.round(totalTime + (stopTime - startTime))), "".concat(fullPrefix, "vc:total"), totalPainted), "".concat(fullPrefix, "vc:ratios"), ratios), outOfBoundary), {}, (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:next"), vcNext.VC), "".concat(fullPrefix, "vc:next:updates"), vcNext.VCEntries.rel.slice(0, 50)), "".concat(fullPrefix, "vc:next:dom"), vcNext.VCBox), "".concat(fullPrefix, "vc:ignored"), _this.getIgnoredElements(componentsLog)), revisionsData), {}, (0, _defineProperty2.default)((0, _defineProperty2.default)({}, "ufo:speedIndex", isCalcSpeedIndexEnabled ? VCEntries.speedIndex : undefined), "ufo:next:speedIndex", isCalcSpeedIndexEnabled ? vcNext.VCEntries.speedIndex : undefined));
|
|
230
267
|
});
|
|
231
268
|
(0, _defineProperty2.default)(this, "handleUpdate", function (rawTime, intersectionRect, targetName, element, type, ignoreReason) {
|
|
232
269
|
_this.measureStart();
|
|
270
|
+
_this.legacyHandleUpdate(rawTime, intersectionRect, targetName, element, type, ignoreReason);
|
|
271
|
+
if ((0, _platformFeatureFlags.fg)('ufo_vc_multiheatmap')) {
|
|
272
|
+
_this.onViewportChangeDetected({
|
|
273
|
+
timestamp: rawTime,
|
|
274
|
+
intersectionRect: intersectionRect,
|
|
275
|
+
targetName: targetName,
|
|
276
|
+
element: element,
|
|
277
|
+
type: type,
|
|
278
|
+
ignoreReason: ignoreReason
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
_this.measureStop();
|
|
282
|
+
});
|
|
283
|
+
(0, _defineProperty2.default)(this, "legacyHandleUpdate", function (rawTime, intersectionRect, targetName, element, type, ignoreReason) {
|
|
233
284
|
if (_this.abortReason.reason === null || _this.abortReason.blocking === false) {
|
|
234
285
|
var time = Math.round(rawTime - _this.startTime);
|
|
235
286
|
var mappedValues = _this.mapPixelsToHeatmap(intersectionRect.left, intersectionRect.top, intersectionRect.width, intersectionRect.height);
|
|
@@ -250,8 +301,38 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
|
|
|
250
301
|
ignoreReason: ignoreReason
|
|
251
302
|
});
|
|
252
303
|
}
|
|
253
|
-
|
|
254
|
-
|
|
304
|
+
});
|
|
305
|
+
(0, _defineProperty2.default)(this, "onViewportChangeDetected", function (_ref9) {
|
|
306
|
+
var element = _ref9.element,
|
|
307
|
+
type = _ref9.type,
|
|
308
|
+
ignoreReason = _ref9.ignoreReason,
|
|
309
|
+
timestamp = _ref9.timestamp,
|
|
310
|
+
targetName = _ref9.targetName,
|
|
311
|
+
intersectionRect = _ref9.intersectionRect;
|
|
312
|
+
if (_this.multiHeatmap === null) {
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
// @todo add abort reason handling
|
|
316
|
+
var time = Math.round(timestamp - _this.startTime);
|
|
317
|
+
var revisions = (0, _revisions.getRevisions)();
|
|
318
|
+
var revisionsClassification = revisions.map(function (revision) {
|
|
319
|
+
return revision.classifier.classifyUpdate({
|
|
320
|
+
element: element,
|
|
321
|
+
type: type,
|
|
322
|
+
ignoreReason: ignoreReason
|
|
323
|
+
});
|
|
324
|
+
}, []);
|
|
325
|
+
_this.multiHeatmap.handleUpdate({
|
|
326
|
+
time: time,
|
|
327
|
+
targetName: targetName,
|
|
328
|
+
intersectionRect: intersectionRect,
|
|
329
|
+
type: type,
|
|
330
|
+
element: element,
|
|
331
|
+
classification: revisionsClassification,
|
|
332
|
+
onError: function onError(error) {
|
|
333
|
+
_this.setAbortReason(abortReason.error, error.time, error.error);
|
|
334
|
+
}
|
|
335
|
+
});
|
|
255
336
|
});
|
|
256
337
|
(0, _defineProperty2.default)(this, "mapPixelsToHeatmap", function (left, top, width, height) {
|
|
257
338
|
var _this$viewport = _this.viewport,
|
|
@@ -309,10 +390,10 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
|
|
|
309
390
|
var unbinds = (0, _attachAbortListeners.attachAbortListeners)(window, _this.viewport, _this.abortReasonCallback);
|
|
310
391
|
if ((_window = window) !== null && _window !== void 0 && _window.__SSR_ABORT_LISTENERS__) {
|
|
311
392
|
var _window2;
|
|
312
|
-
Object.entries(window.__SSR_ABORT_LISTENERS__.aborts).forEach(function (
|
|
313
|
-
var
|
|
314
|
-
key =
|
|
315
|
-
time =
|
|
393
|
+
Object.entries(window.__SSR_ABORT_LISTENERS__.aborts).forEach(function (_ref10) {
|
|
394
|
+
var _ref11 = (0, _slicedToArray2.default)(_ref10, 2),
|
|
395
|
+
key = _ref11[0],
|
|
396
|
+
time = _ref11[1];
|
|
316
397
|
if (time) {
|
|
317
398
|
_this.abortReasonCallback(key, time);
|
|
318
399
|
}
|
|
@@ -336,12 +417,19 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
|
|
|
336
417
|
});
|
|
337
418
|
this.heatmap = this.getCleanHeatmap();
|
|
338
419
|
this.heatmapNext = this.getCleanHeatmap();
|
|
420
|
+
if ((0, _platformFeatureFlags.fg)('ufo_vc_multiheatmap')) {
|
|
421
|
+
this.multiHeatmap = new _heatmap.MultiRevisionHeatmap({
|
|
422
|
+
viewport: this.viewport,
|
|
423
|
+
revisions: (0, _revisions.getRevisions)(),
|
|
424
|
+
devToolsEnabled: this.devToolsEnabled
|
|
425
|
+
});
|
|
426
|
+
}
|
|
339
427
|
this.isPostInteraction = options.isPostInteraction || false;
|
|
340
428
|
}
|
|
341
429
|
return (0, _createClass2.default)(VCObserver, [{
|
|
342
430
|
key: "start",
|
|
343
|
-
value: function start(
|
|
344
|
-
var startTime =
|
|
431
|
+
value: function start(_ref12) {
|
|
432
|
+
var startTime = _ref12.startTime;
|
|
345
433
|
this.active = true;
|
|
346
434
|
if (this.observers.isBrowserSupported()) {
|
|
347
435
|
this.setViewportSize();
|
|
@@ -363,12 +451,12 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
|
|
|
363
451
|
}, {
|
|
364
452
|
key: "getIgnoredElements",
|
|
365
453
|
value: function getIgnoredElements(componentsLog) {
|
|
366
|
-
return Object.values(componentsLog).flat().filter(function (
|
|
367
|
-
var ignoreReason =
|
|
454
|
+
return Object.values(componentsLog).flat().filter(function (_ref13) {
|
|
455
|
+
var ignoreReason = _ref13.ignoreReason;
|
|
368
456
|
return Boolean(ignoreReason);
|
|
369
|
-
}).map(function (
|
|
370
|
-
var targetName =
|
|
371
|
-
ignoreReason =
|
|
457
|
+
}).map(function (_ref14) {
|
|
458
|
+
var targetName = _ref14.targetName,
|
|
459
|
+
ignoreReason = _ref14.ignoreReason;
|
|
372
460
|
return {
|
|
373
461
|
targetName: targetName,
|
|
374
462
|
ignoreReason: ignoreReason
|
|
@@ -489,12 +577,12 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
|
|
|
489
577
|
}
|
|
490
578
|
}], [{
|
|
491
579
|
key: "calculateVC",
|
|
492
|
-
value: function calculateVC(
|
|
493
|
-
var heatmap =
|
|
494
|
-
|
|
495
|
-
ssr =
|
|
496
|
-
componentsLog =
|
|
497
|
-
viewport =
|
|
580
|
+
value: function calculateVC(_ref15) {
|
|
581
|
+
var heatmap = _ref15.heatmap,
|
|
582
|
+
_ref15$ssr = _ref15.ssr,
|
|
583
|
+
ssr = _ref15$ssr === void 0 ? UNUSED_SECTOR : _ref15$ssr,
|
|
584
|
+
componentsLog = _ref15.componentsLog,
|
|
585
|
+
viewport = _ref15.viewport;
|
|
498
586
|
var lastUpdate = {};
|
|
499
587
|
var totalPainted = 0;
|
|
500
588
|
if (ssr !== UNUSED_SECTOR) {
|
|
@@ -537,10 +625,19 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
|
|
|
537
625
|
});
|
|
538
626
|
var VC = VCObserver.makeVCReturnObj();
|
|
539
627
|
var VCBox = VCObserver.makeVCReturnObj();
|
|
628
|
+
|
|
629
|
+
// eslint-disable-next-line @atlaskit/platform/ensure-feature-flag-prefix
|
|
630
|
+
var isCalcSpeedIndexEnabled = (0, _platformFeatureFlags.fg)('ufo-calc-speed-index');
|
|
540
631
|
entries.reduce(function () {
|
|
541
632
|
var acc = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
542
633
|
var v = arguments.length > 1 ? arguments[1] : undefined;
|
|
543
|
-
var
|
|
634
|
+
var currRatio = v[1] / totalPainted;
|
|
635
|
+
var VCRatio = currRatio + acc;
|
|
636
|
+
if ((0, _platformFeatureFlags.fg)('platform_ufo_fix_vc_observer_rounding_error')) {
|
|
637
|
+
var preciseCurrRatio = Math.round(100 * (v[1] / totalPainted));
|
|
638
|
+
var preciseAccRatio = Math.round(acc * 100);
|
|
639
|
+
VCRatio = (preciseCurrRatio + preciseAccRatio) / 100;
|
|
640
|
+
}
|
|
544
641
|
var time = v[0];
|
|
545
642
|
VCObserver.VCParts.forEach(function (key) {
|
|
546
643
|
var value = parseInt(key, 10);
|
|
@@ -554,16 +651,21 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
|
|
|
554
651
|
});
|
|
555
652
|
return VCRatio;
|
|
556
653
|
}, 0);
|
|
557
|
-
var VCEntries = entries.reduce(function (acc,
|
|
558
|
-
var _acc$abs, _componentsLog$timest;
|
|
559
|
-
var
|
|
560
|
-
timestamp =
|
|
561
|
-
entryPainted =
|
|
654
|
+
var VCEntries = entries.reduce(function (acc, _ref16, i) {
|
|
655
|
+
var _acc$abs, _componentsLog$timest, _acc$rel$vc, _acc$rel;
|
|
656
|
+
var _ref17 = (0, _slicedToArray2.default)(_ref16, 2),
|
|
657
|
+
timestamp = _ref17[0],
|
|
658
|
+
entryPainted = _ref17[1];
|
|
562
659
|
var currentlyPainted = entryPainted + (((_acc$abs = acc.abs[i - 1]) === null || _acc$abs === void 0 ? void 0 : _acc$abs[1]) || 0);
|
|
563
660
|
var currentlyPaintedRatio = Math.round(currentlyPainted / totalPainted * 1000) / 10;
|
|
564
661
|
var logEntry = (_componentsLog$timest = componentsLog[timestamp]) === null || _componentsLog$timest === void 0 ? void 0 : _componentsLog$timest.map(function (v) {
|
|
565
662
|
return v.targetName;
|
|
566
663
|
});
|
|
664
|
+
var ratioDelta = (currentlyPaintedRatio - ((_acc$rel$vc = (_acc$rel = acc.rel[i - 1]) === null || _acc$rel === void 0 ? void 0 : _acc$rel.vc) !== null && _acc$rel$vc !== void 0 ? _acc$rel$vc : 0)) / 100;
|
|
665
|
+
if (isCalcSpeedIndexEnabled) {
|
|
666
|
+
var speedIndex = timestamp * ratioDelta;
|
|
667
|
+
acc.speedIndex += speedIndex;
|
|
668
|
+
}
|
|
567
669
|
acc.abs.push([timestamp, currentlyPainted]);
|
|
568
670
|
acc.rel.push({
|
|
569
671
|
time: timestamp,
|
|
@@ -573,8 +675,10 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
|
|
|
573
675
|
return acc;
|
|
574
676
|
}, {
|
|
575
677
|
abs: [],
|
|
576
|
-
rel: []
|
|
678
|
+
rel: [],
|
|
679
|
+
speedIndex: 0
|
|
577
680
|
});
|
|
681
|
+
VCEntries.speedIndex = Math.round(VCEntries.speedIndex);
|
|
578
682
|
return {
|
|
579
683
|
VC: VC,
|
|
580
684
|
VCBox: VCBox,
|