@atlaskit/react-ufo 2.2.0 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/dist/cjs/interaction-metrics/index.js +21 -17
- package/dist/cjs/interaction-metrics-init/index.js +3 -0
- package/dist/cjs/vc/vc-observer/observers/editor-lnv/index.js +187 -0
- package/dist/cjs/vc/vc-observer/observers/editor-lnv/test-utils.js +69 -0
- package/dist/cjs/vc/vc-observer/observers/index.js +17 -4
- package/dist/cjs/vc/vc-observer/observers/ssr-placeholders/index.js +0 -1
- package/dist/es2019/interaction-metrics/index.js +21 -17
- package/dist/es2019/interaction-metrics-init/index.js +3 -0
- package/dist/es2019/vc/vc-observer/observers/editor-lnv/index.js +140 -0
- package/dist/es2019/vc/vc-observer/observers/editor-lnv/test-utils.js +41 -0
- package/dist/es2019/vc/vc-observer/observers/index.js +14 -0
- package/dist/es2019/vc/vc-observer/observers/ssr-placeholders/index.js +0 -1
- package/dist/esm/interaction-metrics/index.js +21 -17
- package/dist/esm/interaction-metrics-init/index.js +3 -0
- package/dist/esm/vc/vc-observer/observers/editor-lnv/index.js +181 -0
- package/dist/esm/vc/vc-observer/observers/editor-lnv/test-utils.js +59 -0
- package/dist/esm/vc/vc-observer/observers/index.js +17 -4
- package/dist/esm/vc/vc-observer/observers/ssr-placeholders/index.js +0 -1
- package/dist/types/common/vc/types.d.ts +1 -1
- package/dist/types/config/index.d.ts +2 -1
- package/dist/types/vc/vc-observer/observers/editor-lnv/index.d.ts +24 -0
- package/dist/types/vc/vc-observer/observers/editor-lnv/test-utils.d.ts +35 -0
- package/dist/types/vc/vc-observer/observers/index.d.ts +1 -0
- package/dist/types/vc/vc-observer/observers/ssr-placeholders/index.d.ts +9 -7
- package/dist/types-ts4.5/common/vc/types.d.ts +1 -1
- package/dist/types-ts4.5/config/index.d.ts +2 -1
- package/dist/types-ts4.5/vc/vc-observer/observers/editor-lnv/index.d.ts +24 -0
- package/dist/types-ts4.5/vc/vc-observer/observers/editor-lnv/test-utils.d.ts +35 -0
- package/dist/types-ts4.5/vc/vc-observer/observers/index.d.ts +1 -0
- package/dist/types-ts4.5/vc/vc-observer/observers/ssr-placeholders/index.d.ts +9 -7
- package/package.json +6 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @atlaskit/ufo-interaction-ignore
|
|
2
2
|
|
|
3
|
+
## 2.2.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#160261](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/160261)
|
|
8
|
+
[`f147e45fb1a5a`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/f147e45fb1a5a) -
|
|
9
|
+
Extends VC90 detector to include editor lazy node view accomodations
|
|
10
|
+
|
|
11
|
+
## 2.2.1
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- [#162445](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/162445)
|
|
16
|
+
[`19a11c825b2fe`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/19a11c825b2fe) -
|
|
17
|
+
enable additional performance marks in performance tab
|
|
18
|
+
|
|
3
19
|
## 2.2.0
|
|
4
20
|
|
|
5
21
|
### Minor Changes
|
|
@@ -75,6 +75,10 @@ function getActiveInteraction() {
|
|
|
75
75
|
}
|
|
76
76
|
return _constants.default.get(interactionId.current);
|
|
77
77
|
}
|
|
78
|
+
function isPerformanceTracingEnabled() {
|
|
79
|
+
var _getConfig;
|
|
80
|
+
return ((_getConfig = (0, _config.getConfig)()) === null || _getConfig === void 0 ? void 0 : _getConfig.enableAdditionalPerformanceMarks) || window.__REACT_UFO_ENABLE_PERF_TRACING || process.env.NODE_ENV !== 'production';
|
|
81
|
+
}
|
|
78
82
|
function labelStackToString(labelStack, name) {
|
|
79
83
|
var _stack$map;
|
|
80
84
|
var stack = (0, _toConsumableArray2.default)(labelStack !== null && labelStack !== void 0 ? labelStack : []);
|
|
@@ -154,7 +158,7 @@ function addCustomTiming(interactionId, labelStack, data) {
|
|
|
154
158
|
labelStack: labelStack,
|
|
155
159
|
data: data
|
|
156
160
|
});
|
|
157
|
-
if (
|
|
161
|
+
if (isPerformanceTracingEnabled()) {
|
|
158
162
|
for (var _i = 0, _Object$entries = Object.entries(data); _i < _Object$entries.length; _i++) {
|
|
159
163
|
var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
|
|
160
164
|
key = _Object$entries$_i[0],
|
|
@@ -185,7 +189,7 @@ function addMark(interactionId, type, name, labelStack) {
|
|
|
185
189
|
time: time
|
|
186
190
|
});
|
|
187
191
|
}
|
|
188
|
-
if (
|
|
192
|
+
if (isPerformanceTracingEnabled()) {
|
|
189
193
|
performance.mark("\uD83D\uDEF8 ".concat(labelStackToString(labelStack, name), " [").concat(type, "]"), {
|
|
190
194
|
startTime: time
|
|
191
195
|
});
|
|
@@ -201,7 +205,7 @@ function addMarkToAll(type, name, labelStack) {
|
|
|
201
205
|
time: time
|
|
202
206
|
});
|
|
203
207
|
});
|
|
204
|
-
if (
|
|
208
|
+
if (isPerformanceTracingEnabled()) {
|
|
205
209
|
performance.mark("\uD83D\uDEF8 ".concat(labelStackToString(labelStack, name), " [").concat(type, "]"), {
|
|
206
210
|
startTime: time
|
|
207
211
|
});
|
|
@@ -220,7 +224,7 @@ function addSpan(interactionId, type, name, labelStack, start) {
|
|
|
220
224
|
end: end,
|
|
221
225
|
size: size
|
|
222
226
|
});
|
|
223
|
-
if (
|
|
227
|
+
if (isPerformanceTracingEnabled()) {
|
|
224
228
|
try {
|
|
225
229
|
// for Firefox 102 and older
|
|
226
230
|
performance.measure("\uD83D\uDEF8 ".concat(labelStackToString(labelStack, name), " [").concat(type, "]"), {
|
|
@@ -246,7 +250,7 @@ function addSpanToAll(type, name, labelStack, start) {
|
|
|
246
250
|
size: size
|
|
247
251
|
});
|
|
248
252
|
});
|
|
249
|
-
if (
|
|
253
|
+
if (isPerformanceTracingEnabled()) {
|
|
250
254
|
try {
|
|
251
255
|
// for Firefox 102 and older
|
|
252
256
|
performance.measure("\uD83D\uDEF8 ".concat(labelStackToString(labelStack, name), " [").concat(type, "]"), {
|
|
@@ -299,7 +303,7 @@ function addHold(interactionId, labelStack, name) {
|
|
|
299
303
|
addHoldCriterion(id, labelStack, name, start);
|
|
300
304
|
return function () {
|
|
301
305
|
var end = performance.now();
|
|
302
|
-
if (
|
|
306
|
+
if (isPerformanceTracingEnabled()) {
|
|
303
307
|
try {
|
|
304
308
|
// for Firefox 102 and older
|
|
305
309
|
performance.measure("\uD83D\uDEF8 ".concat(labelStackToString(labelStack, name), " [hold]"), {
|
|
@@ -419,8 +423,8 @@ function addErrorToAll(name, labelStack, errorType, errorMessage, errorStack) {
|
|
|
419
423
|
});
|
|
420
424
|
}
|
|
421
425
|
var addProfilerTimings = exports.addProfilerTimings = function addProfilerTimings(interactionId, labelStack, type, actualDuration, baseDuration, startTime, commitTime) {
|
|
422
|
-
var
|
|
423
|
-
if (
|
|
426
|
+
var _getConfig2;
|
|
427
|
+
if (isPerformanceTracingEnabled()) {
|
|
424
428
|
try {
|
|
425
429
|
// for Firefox 102 and older
|
|
426
430
|
performance.measure("\uD83D\uDEF8 ".concat(labelStackToString(labelStack), " [react-profiler] ").concat(type), {
|
|
@@ -441,7 +445,7 @@ var addProfilerTimings = exports.addProfilerTimings = function addProfilerTiming
|
|
|
441
445
|
startTime: startTime,
|
|
442
446
|
commitTime: commitTime
|
|
443
447
|
});
|
|
444
|
-
} else if ((
|
|
448
|
+
} else if ((_getConfig2 = (0, _config.getConfig)()) !== null && _getConfig2 !== void 0 && (_getConfig2 = _getConfig2.postInteractionLog) !== null && _getConfig2 !== void 0 && _getConfig2.enabled) {
|
|
445
449
|
postInteractionLog.addProfilerTimings(labelStack, type, actualDuration, baseDuration, startTime, commitTime);
|
|
446
450
|
}
|
|
447
451
|
};
|
|
@@ -458,7 +462,7 @@ function callCleanUpCallbacks(interaction) {
|
|
|
458
462
|
});
|
|
459
463
|
}
|
|
460
464
|
var finishInteraction = function finishInteraction(id, data) {
|
|
461
|
-
var
|
|
465
|
+
var _getConfig3;
|
|
462
466
|
var endTime = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : performance.now();
|
|
463
467
|
// eslint-disable-next-line no-param-reassign
|
|
464
468
|
data.end = endTime;
|
|
@@ -477,7 +481,7 @@ var finishInteraction = function finishInteraction(id, data) {
|
|
|
477
481
|
}
|
|
478
482
|
(0, _experienceTraceIdContext.clearActiveTrace)();
|
|
479
483
|
callCleanUpCallbacks(data);
|
|
480
|
-
if ((
|
|
484
|
+
if ((_getConfig3 = (0, _config.getConfig)()) !== null && _getConfig3 !== void 0 && (_getConfig3 = _getConfig3.vc) !== null && _getConfig3 !== void 0 && _getConfig3.stopVCAtInteractionFinish) {
|
|
481
485
|
data.vc = (0, _vc.getVCObserver)().getVCRawData();
|
|
482
486
|
}
|
|
483
487
|
remove(id);
|
|
@@ -486,7 +490,7 @@ var finishInteraction = function finishInteraction(id, data) {
|
|
|
486
490
|
if (data.ufoName) {
|
|
487
491
|
handleInteraction(id, data);
|
|
488
492
|
}
|
|
489
|
-
if (
|
|
493
|
+
if (isPerformanceTracingEnabled()) {
|
|
490
494
|
var profilerTimingMap = new Map();
|
|
491
495
|
data.reactProfilerTimings.forEach(function (profilerTiming) {
|
|
492
496
|
var labelStackId = labelStackToIdString(profilerTiming.labelStack);
|
|
@@ -551,9 +555,9 @@ function tryComplete(interactionId, endTime) {
|
|
|
551
555
|
if (interaction != null) {
|
|
552
556
|
var noMoreHolds = interaction.holdActive.size === 0;
|
|
553
557
|
if (noMoreHolds) {
|
|
554
|
-
var
|
|
558
|
+
var _getConfig4;
|
|
555
559
|
finishInteraction(interactionId, interaction, endTime);
|
|
556
|
-
if ((
|
|
560
|
+
if ((_getConfig4 = (0, _config.getConfig)()) !== null && _getConfig4 !== void 0 && (_getConfig4 = _getConfig4.postInteractionLog) !== null && _getConfig4 !== void 0 && _getConfig4.enabled) {
|
|
557
561
|
postInteractionLog.onInteractionComplete(interaction);
|
|
558
562
|
}
|
|
559
563
|
}
|
|
@@ -601,9 +605,9 @@ function addOnCancelCallback(id, cancelCallback) {
|
|
|
601
605
|
interaction === null || interaction === void 0 || interaction.cancelCallbacks.push(cancelCallback);
|
|
602
606
|
}
|
|
603
607
|
function addNewInteraction(interactionId, ufoName, type, startTime, rate, labelStack, routeName) {
|
|
604
|
-
var
|
|
608
|
+
var _getConfig5;
|
|
605
609
|
var trace = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;
|
|
606
|
-
if ((
|
|
610
|
+
if ((_getConfig5 = (0, _config.getConfig)()) !== null && _getConfig5 !== void 0 && (_getConfig5 = _getConfig5.postInteractionLog) !== null && _getConfig5 !== void 0 && _getConfig5.enabled) {
|
|
607
611
|
postInteractionLog.reset();
|
|
608
612
|
}
|
|
609
613
|
var previousTime = startTime;
|
|
@@ -799,7 +803,7 @@ function addRedirect(interactionId, fromUfoName, nextUfoName, nextRouteName, tim
|
|
|
799
803
|
fromInteractionName: fromUfoName,
|
|
800
804
|
time: time
|
|
801
805
|
});
|
|
802
|
-
if (
|
|
806
|
+
if (isPerformanceTracingEnabled()) {
|
|
803
807
|
var prevRedirect = interaction.redirects.at(-2);
|
|
804
808
|
try {
|
|
805
809
|
var _prevRedirect$time;
|
|
@@ -41,6 +41,9 @@ var init = exports.init = function init(analyticsWebClientAsync, config) {
|
|
|
41
41
|
if (initialized) {
|
|
42
42
|
return;
|
|
43
43
|
}
|
|
44
|
+
if (window !== undefined) {
|
|
45
|
+
window.__REACT_UFO_ENABLE_PERF_TRACING = Boolean(sessionStorage.getItem('additionalPerfMarks') === 'true');
|
|
46
|
+
}
|
|
44
47
|
(0, _config.setUFOConfig)(config);
|
|
45
48
|
if ((_config$vc = config.vc) !== null && _config$vc !== void 0 && _config$vc.enabled) {
|
|
46
49
|
var vcOptions = {
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.EditorLnvHandler = void 0;
|
|
8
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
9
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
var placeholderDataKey = 'editorLnvPlaceholder'; // data-editor-lnv-placeholder
|
|
12
|
+
var replaceDataKey = 'editorLnvPlaceholderReplace'; // data-editor-lnv-placeholder-replace
|
|
13
|
+
var EditorLnvHandler = exports.EditorLnvHandler = /*#__PURE__*/function () {
|
|
14
|
+
function EditorLnvHandler() {
|
|
15
|
+
var _this = this;
|
|
16
|
+
(0, _classCallCheck2.default)(this, EditorLnvHandler);
|
|
17
|
+
(0, _defineProperty2.default)(this, "placeholders", new Map());
|
|
18
|
+
(0, _defineProperty2.default)(this, "getSizeCallbacks", new Map());
|
|
19
|
+
(0, _defineProperty2.default)(this, "isAddedPlaceholderMatchingSizeCallbacks", new Map());
|
|
20
|
+
(0, _defineProperty2.default)(this, "isAddedReplaceMatchingSizeCallbacks", new Map());
|
|
21
|
+
(0, _defineProperty2.default)(this, "intersectionObserverCallback", function (_ref) {
|
|
22
|
+
var _target$dataset, _target$dataset2;
|
|
23
|
+
var target = _ref.target,
|
|
24
|
+
boundingClientRect = _ref.boundingClientRect;
|
|
25
|
+
_this.intersectionObserver.unobserve(target);
|
|
26
|
+
if (!(target instanceof HTMLElement)) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
var placeholderId = (_target$dataset = target.dataset) === null || _target$dataset === void 0 ? void 0 : _target$dataset[placeholderDataKey];
|
|
30
|
+
if (placeholderId && _this.getSizeCallbacks.has(placeholderId)) {
|
|
31
|
+
var _resolve = _this.getSizeCallbacks.get(placeholderId);
|
|
32
|
+
_this.getSizeCallbacks.delete(placeholderId);
|
|
33
|
+
if (!_resolve) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
_resolve({
|
|
37
|
+
x: boundingClientRect.x,
|
|
38
|
+
y: boundingClientRect.y,
|
|
39
|
+
width: boundingClientRect.width,
|
|
40
|
+
height: boundingClientRect.height
|
|
41
|
+
});
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (placeholderId && _this.isAddedPlaceholderMatchingSizeCallbacks.has(placeholderId)) {
|
|
45
|
+
var _resolve2 = _this.isAddedPlaceholderMatchingSizeCallbacks.get(placeholderId);
|
|
46
|
+
_this.isAddedPlaceholderMatchingSizeCallbacks.delete(placeholderId);
|
|
47
|
+
if (!_resolve2) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
var placeholder = _this.placeholders.get(placeholderId);
|
|
51
|
+
if (!placeholder) {
|
|
52
|
+
_resolve2(false);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
_resolve2(_this.areRectsSameSize(placeholder, boundingClientRect));
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
var replaceId = (_target$dataset2 = target.dataset) === null || _target$dataset2 === void 0 ? void 0 : _target$dataset2[replaceDataKey];
|
|
59
|
+
if (replaceId && _this.isAddedReplaceMatchingSizeCallbacks.has(replaceId)) {
|
|
60
|
+
var _resolve3 = _this.isAddedReplaceMatchingSizeCallbacks.get(replaceId);
|
|
61
|
+
_this.isAddedReplaceMatchingSizeCallbacks.delete(replaceId);
|
|
62
|
+
if (!_resolve3) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
var _placeholder = _this.placeholders.get(replaceId);
|
|
66
|
+
if (!_placeholder) {
|
|
67
|
+
_resolve3(false);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
_this.placeholders.delete(replaceId);
|
|
71
|
+
_resolve3(_this.areRectsSameSize(_placeholder, boundingClientRect));
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
this.intersectionObserver = new IntersectionObserver(function (entries) {
|
|
76
|
+
return entries.filter(function (entry) {
|
|
77
|
+
return entry.intersectionRatio > 0;
|
|
78
|
+
}).forEach(_this.intersectionObserverCallback);
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
(0, _createClass2.default)(EditorLnvHandler, [{
|
|
82
|
+
key: "shouldHandleAddedNode",
|
|
83
|
+
value: function shouldHandleAddedNode(el) {
|
|
84
|
+
var _el$dataset, _el$dataset2;
|
|
85
|
+
return ((_el$dataset = el.dataset) === null || _el$dataset === void 0 ? void 0 : _el$dataset[placeholderDataKey]) || ((_el$dataset2 = el.dataset) === null || _el$dataset2 === void 0 ? void 0 : _el$dataset2[replaceDataKey]);
|
|
86
|
+
}
|
|
87
|
+
}, {
|
|
88
|
+
key: "handleAddedNode",
|
|
89
|
+
value: function handleAddedNode(el) {
|
|
90
|
+
var _el$dataset3, _el$dataset4;
|
|
91
|
+
// If it placeholder does not already exist, add it to the map
|
|
92
|
+
var placeholderId = (_el$dataset3 = el.dataset) === null || _el$dataset3 === void 0 ? void 0 : _el$dataset3[placeholderDataKey];
|
|
93
|
+
if (placeholderId) {
|
|
94
|
+
return this.handleAddedPlaceholderNode(el, placeholderId);
|
|
95
|
+
}
|
|
96
|
+
var replaceId = (_el$dataset4 = el.dataset) === null || _el$dataset4 === void 0 ? void 0 : _el$dataset4[replaceDataKey];
|
|
97
|
+
if (replaceId) {
|
|
98
|
+
return this.handleAddedReplaceNode(el, replaceId);
|
|
99
|
+
}
|
|
100
|
+
return Promise.resolve({
|
|
101
|
+
shouldIgnore: false
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}, {
|
|
105
|
+
key: "clear",
|
|
106
|
+
value: function clear() {
|
|
107
|
+
this.placeholders.clear();
|
|
108
|
+
this.intersectionObserver.disconnect();
|
|
109
|
+
}
|
|
110
|
+
}, {
|
|
111
|
+
key: "handleAddedPlaceholderNode",
|
|
112
|
+
value: function handleAddedPlaceholderNode(el, placeholderId) {
|
|
113
|
+
if (this.isExistingPlaceholder(placeholderId)) {
|
|
114
|
+
return this.isAddedPlaceholderMatchingSize(el, placeholderId).then(function (isMatching) {
|
|
115
|
+
return {
|
|
116
|
+
shouldIgnore: isMatching
|
|
117
|
+
};
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
return this.registerPlaceholder(el, placeholderId).then(function () {
|
|
121
|
+
return {
|
|
122
|
+
shouldIgnore: false
|
|
123
|
+
};
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}, {
|
|
127
|
+
key: "handleAddedReplaceNode",
|
|
128
|
+
value: function handleAddedReplaceNode(el, placeholderId) {
|
|
129
|
+
if (this.isExistingPlaceholder(placeholderId)) {
|
|
130
|
+
return this.isAddedReplaceMatchingSize(el, placeholderId).then(function (isMatching) {
|
|
131
|
+
return {
|
|
132
|
+
shouldIgnore: isMatching
|
|
133
|
+
};
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
return Promise.resolve({
|
|
137
|
+
shouldIgnore: false
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}, {
|
|
141
|
+
key: "isExistingPlaceholder",
|
|
142
|
+
value: function isExistingPlaceholder(placeholderId) {
|
|
143
|
+
return this.placeholders.has(placeholderId);
|
|
144
|
+
}
|
|
145
|
+
}, {
|
|
146
|
+
key: "registerPlaceholder",
|
|
147
|
+
value: function registerPlaceholder(el, placeholderId) {
|
|
148
|
+
var _this2 = this;
|
|
149
|
+
return this.getSize(el, placeholderId).then(function (size) {
|
|
150
|
+
_this2.placeholders.set(placeholderId, size);
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}, {
|
|
154
|
+
key: "getSize",
|
|
155
|
+
value: function getSize(el, placeholderId) {
|
|
156
|
+
var _this3 = this;
|
|
157
|
+
return new Promise(function (resolve) {
|
|
158
|
+
_this3.getSizeCallbacks.set(placeholderId, resolve);
|
|
159
|
+
_this3.intersectionObserver.observe(el);
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}, {
|
|
163
|
+
key: "isAddedPlaceholderMatchingSize",
|
|
164
|
+
value: function isAddedPlaceholderMatchingSize(el, placeholderId) {
|
|
165
|
+
var _this4 = this;
|
|
166
|
+
return new Promise(function (resolve) {
|
|
167
|
+
_this4.isAddedPlaceholderMatchingSizeCallbacks.set(placeholderId, resolve);
|
|
168
|
+
_this4.intersectionObserver.observe(el);
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
}, {
|
|
172
|
+
key: "isAddedReplaceMatchingSize",
|
|
173
|
+
value: function isAddedReplaceMatchingSize(el, placeholderId) {
|
|
174
|
+
var _this5 = this;
|
|
175
|
+
return new Promise(function (resolve) {
|
|
176
|
+
_this5.isAddedReplaceMatchingSizeCallbacks.set(placeholderId, resolve);
|
|
177
|
+
_this5.intersectionObserver.observe(el);
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
}, {
|
|
181
|
+
key: "areRectsSameSize",
|
|
182
|
+
value: function areRectsSameSize(a, b) {
|
|
183
|
+
return Math.abs(a.width - b.width) < 1 && Math.abs(a.height - b.height) < 1;
|
|
184
|
+
}
|
|
185
|
+
}]);
|
|
186
|
+
return EditorLnvHandler;
|
|
187
|
+
}();
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.createMockIntersectionObserver = createMockIntersectionObserver;
|
|
8
|
+
exports.createPlaceholderElement = createPlaceholderElement;
|
|
9
|
+
exports.createReplaceElement = createReplaceElement;
|
|
10
|
+
exports.handleElements = handleElements;
|
|
11
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
14
|
+
var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray"));
|
|
15
|
+
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; }
|
|
16
|
+
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; }
|
|
17
|
+
function createPlaceholderElement(id) {
|
|
18
|
+
var el = document.createElement('div');
|
|
19
|
+
el.dataset.editorLnvPlaceholder = id;
|
|
20
|
+
return el;
|
|
21
|
+
}
|
|
22
|
+
function createReplaceElement(id) {
|
|
23
|
+
var el = document.createElement('div');
|
|
24
|
+
el.dataset.editorLnvPlaceholderReplace = id;
|
|
25
|
+
return el;
|
|
26
|
+
}
|
|
27
|
+
function handleElements(elements, handler, observerCallback, callback) {
|
|
28
|
+
var _elements = (0, _toArray2.default)(elements),
|
|
29
|
+
first = _elements[0],
|
|
30
|
+
rest = _elements.slice(1);
|
|
31
|
+
handler.handleAddedNode(first.element).then(function (result) {
|
|
32
|
+
if (!rest.length) {
|
|
33
|
+
// Recursion terminating condition
|
|
34
|
+
callback(result);
|
|
35
|
+
} else {
|
|
36
|
+
// Recursively handle the rest of the elements
|
|
37
|
+
handleElements(rest, handler, observerCallback, callback);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
observerCallback([{
|
|
41
|
+
target: first.element,
|
|
42
|
+
boundingClientRect: first.rect
|
|
43
|
+
}]);
|
|
44
|
+
}
|
|
45
|
+
function createMockIntersectionObserver(cbRef) {
|
|
46
|
+
return /*#__PURE__*/function () {
|
|
47
|
+
function _class(fn) {
|
|
48
|
+
(0, _classCallCheck2.default)(this, _class);
|
|
49
|
+
cbRef.current = function (entries) {
|
|
50
|
+
return fn(entries.map(function (entry) {
|
|
51
|
+
return _objectSpread(_objectSpread({}, entry), {}, {
|
|
52
|
+
intersectionRatio: 1
|
|
53
|
+
});
|
|
54
|
+
}));
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
(0, _createClass2.default)(_class, [{
|
|
58
|
+
key: "observe",
|
|
59
|
+
value: function observe() {}
|
|
60
|
+
}, {
|
|
61
|
+
key: "unobserve",
|
|
62
|
+
value: function unobserve() {}
|
|
63
|
+
}, {
|
|
64
|
+
key: "disconnect",
|
|
65
|
+
value: function disconnect() {}
|
|
66
|
+
}]);
|
|
67
|
+
return _class;
|
|
68
|
+
}();
|
|
69
|
+
}
|
|
@@ -9,7 +9,9 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
9
9
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
10
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
11
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
12
13
|
var _vcUtils = require("../media-wrapper/vc-utils");
|
|
14
|
+
var _editorLnv = require("./editor-lnv");
|
|
13
15
|
var _ssrPlaceholders = require("./ssr-placeholders");
|
|
14
16
|
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
15
17
|
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
@@ -59,6 +61,7 @@ var Observers = exports.Observers = /*#__PURE__*/function () {
|
|
|
59
61
|
this.intersectionObserver = this.getIntersectionObserver();
|
|
60
62
|
this.mutationObserver = this.getMutationObserver();
|
|
61
63
|
this.ssrPlaceholderHandler = new _ssrPlaceholders.SSRPlaceholderHandlers();
|
|
64
|
+
this.editorLnvHandler = new _editorLnv.EditorLnvHandler();
|
|
62
65
|
}
|
|
63
66
|
(0, _createClass2.default)(Observers, [{
|
|
64
67
|
key: "isBrowserSupported",
|
|
@@ -95,6 +98,7 @@ var Observers = exports.Observers = /*#__PURE__*/function () {
|
|
|
95
98
|
this.callbacks = new Set();
|
|
96
99
|
this.ssr.reactRootElement = null;
|
|
97
100
|
this.ssrPlaceholderHandler.clear();
|
|
101
|
+
this.editorLnvHandler.clear();
|
|
98
102
|
}
|
|
99
103
|
}, {
|
|
100
104
|
key: "getTotalTime",
|
|
@@ -168,6 +172,15 @@ var Observers = exports.Observers = /*#__PURE__*/function () {
|
|
|
168
172
|
});
|
|
169
173
|
return;
|
|
170
174
|
}
|
|
175
|
+
if ((0, _platformFeatureFlags.fg)('platform_editor_ed-25557_lnv_add_ssr_placeholder')) {
|
|
176
|
+
if (_this2.editorLnvHandler.shouldHandleAddedNode(node)) {
|
|
177
|
+
_this2.editorLnvHandler.handleAddedNode(node).then(function (_ref) {
|
|
178
|
+
var shouldIgnore = _ref.shouldIgnore;
|
|
179
|
+
_this2.observeElement(node, mutation, 'html', shouldIgnore ? 'editor-lazy-node-view' : ignoreReason);
|
|
180
|
+
});
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
171
184
|
_this2.observeElement(node, mutation, 'html', ignoreReason);
|
|
172
185
|
}
|
|
173
186
|
if (node instanceof Text && node.parentElement != null) {
|
|
@@ -264,10 +277,10 @@ var Observers = exports.Observers = /*#__PURE__*/function () {
|
|
|
264
277
|
var _this3 = this;
|
|
265
278
|
return this.isBrowserSupported() ? new IntersectionObserver(function (entries) {
|
|
266
279
|
_this3.measureStart();
|
|
267
|
-
entries.forEach(function (
|
|
268
|
-
var isIntersecting =
|
|
269
|
-
ir =
|
|
270
|
-
target =
|
|
280
|
+
entries.forEach(function (_ref2) {
|
|
281
|
+
var isIntersecting = _ref2.isIntersecting,
|
|
282
|
+
ir = _ref2.intersectionRect,
|
|
283
|
+
target = _ref2.target;
|
|
271
284
|
var data = _this3.observedMutations.get(target);
|
|
272
285
|
_this3.observedMutations.delete(target);
|
|
273
286
|
if (isIntersecting && ir.width > 0 && ir.height > 0) {
|
|
@@ -40,7 +40,6 @@ var SSRPlaceholderHandlers = exports.SSRPlaceholderHandlers = /*#__PURE__*/funct
|
|
|
40
40
|
_this.callbacks.delete(staticKey);
|
|
41
41
|
}
|
|
42
42
|
} else {
|
|
43
|
-
// react component check
|
|
44
43
|
var key = target.dataset.ssrPlaceholderReplace || '';
|
|
45
44
|
var _resolve2 = _this.reactValidateCallbacks.get(key);
|
|
46
45
|
if (!_resolve2) {
|
|
@@ -24,6 +24,10 @@ export function getActiveInteraction() {
|
|
|
24
24
|
}
|
|
25
25
|
return interactions.get(interactionId.current);
|
|
26
26
|
}
|
|
27
|
+
function isPerformanceTracingEnabled() {
|
|
28
|
+
var _getConfig;
|
|
29
|
+
return ((_getConfig = getConfig()) === null || _getConfig === void 0 ? void 0 : _getConfig.enableAdditionalPerformanceMarks) || window.__REACT_UFO_ENABLE_PERF_TRACING || process.env.NODE_ENV !== 'production';
|
|
30
|
+
}
|
|
27
31
|
function labelStackToString(labelStack, name) {
|
|
28
32
|
var _stack$map;
|
|
29
33
|
const stack = [...(labelStack !== null && labelStack !== void 0 ? labelStack : [])];
|
|
@@ -89,7 +93,7 @@ export function addCustomTiming(interactionId, labelStack, data) {
|
|
|
89
93
|
labelStack,
|
|
90
94
|
data
|
|
91
95
|
});
|
|
92
|
-
if (
|
|
96
|
+
if (isPerformanceTracingEnabled()) {
|
|
93
97
|
for (const [key, timingData] of Object.entries(data)) {
|
|
94
98
|
const {
|
|
95
99
|
startTime,
|
|
@@ -118,7 +122,7 @@ export function addMark(interactionId, type, name, labelStack, time = performanc
|
|
|
118
122
|
time
|
|
119
123
|
});
|
|
120
124
|
}
|
|
121
|
-
if (
|
|
125
|
+
if (isPerformanceTracingEnabled()) {
|
|
122
126
|
performance.mark(`🛸 ${labelStackToString(labelStack, name)} [${type}]`, {
|
|
123
127
|
startTime: time
|
|
124
128
|
});
|
|
@@ -133,7 +137,7 @@ export function addMarkToAll(type, name, labelStack, time = performance.now()) {
|
|
|
133
137
|
time
|
|
134
138
|
});
|
|
135
139
|
});
|
|
136
|
-
if (
|
|
140
|
+
if (isPerformanceTracingEnabled()) {
|
|
137
141
|
performance.mark(`🛸 ${labelStackToString(labelStack, name)} [${type}]`, {
|
|
138
142
|
startTime: time
|
|
139
143
|
});
|
|
@@ -150,7 +154,7 @@ export function addSpan(interactionId, type, name, labelStack, start, end = perf
|
|
|
150
154
|
end,
|
|
151
155
|
size
|
|
152
156
|
});
|
|
153
|
-
if (
|
|
157
|
+
if (isPerformanceTracingEnabled()) {
|
|
154
158
|
try {
|
|
155
159
|
// for Firefox 102 and older
|
|
156
160
|
performance.measure(`🛸 ${labelStackToString(labelStack, name)} [${type}]`, {
|
|
@@ -174,7 +178,7 @@ export function addSpanToAll(type, name, labelStack, start, end = performance.no
|
|
|
174
178
|
size
|
|
175
179
|
});
|
|
176
180
|
});
|
|
177
|
-
if (
|
|
181
|
+
if (isPerformanceTracingEnabled()) {
|
|
178
182
|
try {
|
|
179
183
|
// for Firefox 102 and older
|
|
180
184
|
performance.measure(`🛸 ${labelStackToString(labelStack, name)} [${type}]`, {
|
|
@@ -227,7 +231,7 @@ export function addHold(interactionId, labelStack, name) {
|
|
|
227
231
|
addHoldCriterion(id, labelStack, name, start);
|
|
228
232
|
return () => {
|
|
229
233
|
const end = performance.now();
|
|
230
|
-
if (
|
|
234
|
+
if (isPerformanceTracingEnabled()) {
|
|
231
235
|
try {
|
|
232
236
|
// for Firefox 102 and older
|
|
233
237
|
performance.measure(`🛸 ${labelStackToString(labelStack, name)} [hold]`, {
|
|
@@ -349,8 +353,8 @@ export function addErrorToAll(name, labelStack, errorType, errorMessage, errorSt
|
|
|
349
353
|
});
|
|
350
354
|
}
|
|
351
355
|
export const addProfilerTimings = (interactionId, labelStack, type, actualDuration, baseDuration, startTime, commitTime) => {
|
|
352
|
-
var
|
|
353
|
-
if (
|
|
356
|
+
var _getConfig2, _getConfig2$postInter;
|
|
357
|
+
if (isPerformanceTracingEnabled()) {
|
|
354
358
|
try {
|
|
355
359
|
// for Firefox 102 and older
|
|
356
360
|
performance.measure(`🛸 ${labelStackToString(labelStack)} [react-profiler] ${type}`, {
|
|
@@ -371,7 +375,7 @@ export const addProfilerTimings = (interactionId, labelStack, type, actualDurati
|
|
|
371
375
|
startTime,
|
|
372
376
|
commitTime
|
|
373
377
|
});
|
|
374
|
-
} else if ((
|
|
378
|
+
} else if ((_getConfig2 = getConfig()) !== null && _getConfig2 !== void 0 && (_getConfig2$postInter = _getConfig2.postInteractionLog) !== null && _getConfig2$postInter !== void 0 && _getConfig2$postInter.enabled) {
|
|
375
379
|
postInteractionLog.addProfilerTimings(labelStack, type, actualDuration, baseDuration, startTime, commitTime);
|
|
376
380
|
}
|
|
377
381
|
};
|
|
@@ -388,7 +392,7 @@ function callCleanUpCallbacks(interaction) {
|
|
|
388
392
|
});
|
|
389
393
|
}
|
|
390
394
|
const finishInteraction = (id, data, endTime = performance.now()) => {
|
|
391
|
-
var
|
|
395
|
+
var _getConfig3, _getConfig3$vc;
|
|
392
396
|
// eslint-disable-next-line no-param-reassign
|
|
393
397
|
data.end = endTime;
|
|
394
398
|
try {
|
|
@@ -406,7 +410,7 @@ const finishInteraction = (id, data, endTime = performance.now()) => {
|
|
|
406
410
|
}
|
|
407
411
|
clearActiveTrace();
|
|
408
412
|
callCleanUpCallbacks(data);
|
|
409
|
-
if ((
|
|
413
|
+
if ((_getConfig3 = getConfig()) !== null && _getConfig3 !== void 0 && (_getConfig3$vc = _getConfig3.vc) !== null && _getConfig3$vc !== void 0 && _getConfig3$vc.stopVCAtInteractionFinish) {
|
|
410
414
|
data.vc = getVCObserver().getVCRawData();
|
|
411
415
|
}
|
|
412
416
|
remove(id);
|
|
@@ -415,7 +419,7 @@ const finishInteraction = (id, data, endTime = performance.now()) => {
|
|
|
415
419
|
if (data.ufoName) {
|
|
416
420
|
handleInteraction(id, data);
|
|
417
421
|
}
|
|
418
|
-
if (
|
|
422
|
+
if (isPerformanceTracingEnabled()) {
|
|
419
423
|
const profilerTimingMap = new Map();
|
|
420
424
|
data.reactProfilerTimings.forEach(profilerTiming => {
|
|
421
425
|
const labelStackId = labelStackToIdString(profilerTiming.labelStack);
|
|
@@ -471,9 +475,9 @@ export function tryComplete(interactionId, endTime) {
|
|
|
471
475
|
if (interaction != null) {
|
|
472
476
|
const noMoreHolds = interaction.holdActive.size === 0;
|
|
473
477
|
if (noMoreHolds) {
|
|
474
|
-
var
|
|
478
|
+
var _getConfig4, _getConfig4$postInter;
|
|
475
479
|
finishInteraction(interactionId, interaction, endTime);
|
|
476
|
-
if ((
|
|
480
|
+
if ((_getConfig4 = getConfig()) !== null && _getConfig4 !== void 0 && (_getConfig4$postInter = _getConfig4.postInteractionLog) !== null && _getConfig4$postInter !== void 0 && _getConfig4$postInter.enabled) {
|
|
477
481
|
postInteractionLog.onInteractionComplete(interaction);
|
|
478
482
|
}
|
|
479
483
|
}
|
|
@@ -521,8 +525,8 @@ export function addOnCancelCallback(id, cancelCallback) {
|
|
|
521
525
|
interaction === null || interaction === void 0 ? void 0 : interaction.cancelCallbacks.push(cancelCallback);
|
|
522
526
|
}
|
|
523
527
|
export function addNewInteraction(interactionId, ufoName, type, startTime, rate, labelStack, routeName, trace = null) {
|
|
524
|
-
var
|
|
525
|
-
if ((
|
|
528
|
+
var _getConfig5, _getConfig5$postInter;
|
|
529
|
+
if ((_getConfig5 = getConfig()) !== null && _getConfig5 !== void 0 && (_getConfig5$postInter = _getConfig5.postInteractionLog) !== null && _getConfig5$postInter !== void 0 && _getConfig5$postInter.enabled) {
|
|
526
530
|
postInteractionLog.reset();
|
|
527
531
|
}
|
|
528
532
|
let previousTime = startTime;
|
|
@@ -719,7 +723,7 @@ export function addRedirect(interactionId, fromUfoName, nextUfoName, nextRouteNa
|
|
|
719
723
|
fromInteractionName: fromUfoName,
|
|
720
724
|
time
|
|
721
725
|
});
|
|
722
|
-
if (
|
|
726
|
+
if (isPerformanceTracingEnabled()) {
|
|
723
727
|
const prevRedirect = interaction.redirects.at(-2);
|
|
724
728
|
try {
|
|
725
729
|
var _prevRedirect$time;
|
|
@@ -30,6 +30,9 @@ export const init = (analyticsWebClientAsync, config) => {
|
|
|
30
30
|
if (initialized) {
|
|
31
31
|
return;
|
|
32
32
|
}
|
|
33
|
+
if (window !== undefined) {
|
|
34
|
+
window.__REACT_UFO_ENABLE_PERF_TRACING = Boolean(sessionStorage.getItem('additionalPerfMarks') === 'true');
|
|
35
|
+
}
|
|
33
36
|
setUFOConfig(config);
|
|
34
37
|
if ((_config$vc = config.vc) !== null && _config$vc !== void 0 && _config$vc.enabled) {
|
|
35
38
|
const vcOptions = {
|