@atlaskit/react-ufo 4.15.11 → 4.15.13
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 +14 -0
- package/dist/cjs/vc/vc-observer/index.js +9 -0
- package/dist/cjs/vc/vc-observer/observers/ssr-placeholders/index.js +4 -2
- package/dist/cjs/vc/vc-observer-new/index.js +9 -0
- package/dist/es2019/vc/vc-observer/index.js +9 -0
- package/dist/es2019/vc/vc-observer/observers/ssr-placeholders/index.js +4 -3
- package/dist/es2019/vc/vc-observer-new/index.js +9 -0
- package/dist/esm/vc/vc-observer/index.js +9 -0
- package/dist/esm/vc/vc-observer/observers/ssr-placeholders/index.js +4 -2
- package/dist/esm/vc/vc-observer-new/index.js +9 -0
- package/dist/types/vc/vc-observer/observers/ssr-placeholders/index.d.ts +1 -1
- package/dist/types-ts4.5/vc/vc-observer/observers/ssr-placeholders/index.d.ts +1 -1
- package/package.json +4 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @atlaskit/ufo-interaction-ignore
|
|
2
2
|
|
|
3
|
+
## 4.15.13
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`b7caf41846c8c`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/b7caf41846c8c) -
|
|
8
|
+
Prevent keypresses from aborting press interactions in react ufo
|
|
9
|
+
|
|
10
|
+
## 4.15.12
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- [`19af60b5294cd`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/19af60b5294cd) -
|
|
15
|
+
Reduces eagerness of ssr placeholder checking
|
|
16
|
+
|
|
3
17
|
## 4.15.11
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
|
@@ -13,6 +13,7 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
|
|
|
13
13
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
14
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
15
15
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
16
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
16
17
|
var _config = require("../../config");
|
|
17
18
|
var _interactionMetrics = require("../../interaction-metrics");
|
|
18
19
|
var _attachAbortListeners = require("./attachAbortListeners");
|
|
@@ -393,6 +394,14 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
|
|
|
393
394
|
_this.setAbortReason(abortReason.scroll, time);
|
|
394
395
|
break;
|
|
395
396
|
case 'keydown':
|
|
397
|
+
// Don't abort press interactions on keydown events, as keydown is expected
|
|
398
|
+
// when users press Enter/Space to activate buttons or other interactive elements
|
|
399
|
+
if ((0, _platformFeatureFlags.fg)('platform_ufo_keypress_interaction_abort')) {
|
|
400
|
+
var interaction = (0, _interactionMetrics.getActiveInteraction)();
|
|
401
|
+
if ((interaction === null || interaction === void 0 ? void 0 : interaction.type) === 'press') {
|
|
402
|
+
break;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
396
405
|
_this.setAbortReason(abortReason.keypress, time);
|
|
397
406
|
break;
|
|
398
407
|
case 'resize':
|
|
@@ -245,12 +245,13 @@ var SSRPlaceholderHandlers = exports.SSRPlaceholderHandlers = /*#__PURE__*/funct
|
|
|
245
245
|
}, {
|
|
246
246
|
key: "findNearestPlaceholderOrContainer",
|
|
247
247
|
value: function findNearestPlaceholderOrContainer(element) {
|
|
248
|
+
var limit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ANCESTOR_LOOKUP_LIMIT;
|
|
248
249
|
var ancestor = element;
|
|
249
250
|
if (this.isPlaceholderIgnored(element) && element.parentElement) {
|
|
250
251
|
ancestor = element.parentElement;
|
|
251
252
|
}
|
|
252
253
|
var i = 0;
|
|
253
|
-
while (ancestor && i <
|
|
254
|
+
while (ancestor && i < limit) {
|
|
254
255
|
if (this.isPlaceholder(ancestor) || this.isPlaceholderReplacement(ancestor)) {
|
|
255
256
|
return ancestor;
|
|
256
257
|
}
|
|
@@ -325,7 +326,8 @@ var SSRPlaceholderHandlers = exports.SSRPlaceholderHandlers = /*#__PURE__*/funct
|
|
|
325
326
|
}, {
|
|
326
327
|
key: "validateReactComponentMatchToPlaceholderV4",
|
|
327
328
|
value: function validateReactComponentMatchToPlaceholderV4(el) {
|
|
328
|
-
el = (0, _platformFeatureFlags.fg)('platform_ufo_v4_fix_nested_ssr_placeholder') ? this.findNearestPlaceholderOrContainer(el)
|
|
329
|
+
el = (0, _platformFeatureFlags.fg)('platform_ufo_v4_fix_nested_ssr_placeholder') ? this.findNearestPlaceholderOrContainer(el, 2) // We are using 2 due to over-eagerness of the default, only check itself and 1 ancestor
|
|
330
|
+
: this.findNearestPlaceholderContainerIfIgnored(el);
|
|
329
331
|
var id = this.getPlaceholderReplacementId(el);
|
|
330
332
|
return this.staticPlaceholders.has(id);
|
|
331
333
|
}
|
|
@@ -13,6 +13,7 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
|
|
|
13
13
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
14
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
15
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
16
|
+
var _interactionMetrics = require("../../interaction-metrics");
|
|
16
17
|
var _ssrPlaceholders = require("../vc-observer/observers/ssr-placeholders");
|
|
17
18
|
var _entriesTimeline = _interopRequireDefault(require("./entries-timeline"));
|
|
18
19
|
var _getElementName2 = _interopRequireDefault(require("./get-element-name"));
|
|
@@ -113,6 +114,14 @@ var VCObserverNew = exports.default = /*#__PURE__*/function () {
|
|
|
113
114
|
onEvent: function onEvent(_ref) {
|
|
114
115
|
var time = _ref.time,
|
|
115
116
|
type = _ref.type;
|
|
117
|
+
// Don't abort press interactions on keydown events, as keydown is expected
|
|
118
|
+
// when users press Enter/Space to activate buttons or other interactive elements
|
|
119
|
+
if (type === 'keydown' && (0, _platformFeatureFlags.fg)('platform_ufo_keypress_interaction_abort')) {
|
|
120
|
+
var interaction = (0, _interactionMetrics.getActiveInteraction)();
|
|
121
|
+
if ((interaction === null || interaction === void 0 ? void 0 : interaction.type) === 'press') {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
116
125
|
_this.entriesTimeline.push({
|
|
117
126
|
time: time,
|
|
118
127
|
data: {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
2
3
|
import { isVCRevisionEnabled } from '../../config';
|
|
3
4
|
import { getActiveInteraction } from '../../interaction-metrics';
|
|
4
5
|
import { attachAbortListeners } from './attachAbortListeners';
|
|
@@ -432,6 +433,14 @@ export class VCObserver {
|
|
|
432
433
|
this.setAbortReason(abortReason.scroll, time);
|
|
433
434
|
break;
|
|
434
435
|
case 'keydown':
|
|
436
|
+
// Don't abort press interactions on keydown events, as keydown is expected
|
|
437
|
+
// when users press Enter/Space to activate buttons or other interactive elements
|
|
438
|
+
if (fg('platform_ufo_keypress_interaction_abort')) {
|
|
439
|
+
const interaction = getActiveInteraction();
|
|
440
|
+
if ((interaction === null || interaction === void 0 ? void 0 : interaction.type) === 'press') {
|
|
441
|
+
break;
|
|
442
|
+
}
|
|
443
|
+
}
|
|
435
444
|
this.setAbortReason(abortReason.keypress, time);
|
|
436
445
|
break;
|
|
437
446
|
case 'resize':
|
|
@@ -209,13 +209,13 @@ export class SSRPlaceholderHandlers {
|
|
|
209
209
|
}
|
|
210
210
|
return element;
|
|
211
211
|
}
|
|
212
|
-
findNearestPlaceholderOrContainer(element) {
|
|
212
|
+
findNearestPlaceholderOrContainer(element, limit = ANCESTOR_LOOKUP_LIMIT) {
|
|
213
213
|
let ancestor = element;
|
|
214
214
|
if (this.isPlaceholderIgnored(element) && element.parentElement) {
|
|
215
215
|
ancestor = element.parentElement;
|
|
216
216
|
}
|
|
217
217
|
let i = 0;
|
|
218
|
-
while (ancestor && i <
|
|
218
|
+
while (ancestor && i < limit) {
|
|
219
219
|
if (this.isPlaceholder(ancestor) || this.isPlaceholderReplacement(ancestor)) {
|
|
220
220
|
return ancestor;
|
|
221
221
|
}
|
|
@@ -277,7 +277,8 @@ export class SSRPlaceholderHandlers {
|
|
|
277
277
|
});
|
|
278
278
|
}
|
|
279
279
|
validateReactComponentMatchToPlaceholderV4(el) {
|
|
280
|
-
el = fg('platform_ufo_v4_fix_nested_ssr_placeholder') ? this.findNearestPlaceholderOrContainer(el)
|
|
280
|
+
el = fg('platform_ufo_v4_fix_nested_ssr_placeholder') ? this.findNearestPlaceholderOrContainer(el, 2) // We are using 2 due to over-eagerness of the default, only check itself and 1 ancestor
|
|
281
|
+
: this.findNearestPlaceholderContainerIfIgnored(el);
|
|
281
282
|
const id = this.getPlaceholderReplacementId(el);
|
|
282
283
|
return this.staticPlaceholders.has(id);
|
|
283
284
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
2
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
3
|
+
import { getActiveInteraction } from '../../interaction-metrics';
|
|
3
4
|
import { SSRPlaceholderHandlers } from '../vc-observer/observers/ssr-placeholders';
|
|
4
5
|
import EntriesTimeline from './entries-timeline';
|
|
5
6
|
import getElementName from './get-element-name';
|
|
@@ -96,6 +97,14 @@ export default class VCObserverNew {
|
|
|
96
97
|
time,
|
|
97
98
|
type
|
|
98
99
|
}) => {
|
|
100
|
+
// Don't abort press interactions on keydown events, as keydown is expected
|
|
101
|
+
// when users press Enter/Space to activate buttons or other interactive elements
|
|
102
|
+
if (type === 'keydown' && fg('platform_ufo_keypress_interaction_abort')) {
|
|
103
|
+
const interaction = getActiveInteraction();
|
|
104
|
+
if ((interaction === null || interaction === void 0 ? void 0 : interaction.type) === 'press') {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
99
108
|
this.entriesTimeline.push({
|
|
100
109
|
time,
|
|
101
110
|
data: {
|
|
@@ -9,6 +9,7 @@ var _excluded = ["__debug__element"];
|
|
|
9
9
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
10
10
|
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; }
|
|
11
11
|
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) { _defineProperty(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; }
|
|
12
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
12
13
|
import { isVCRevisionEnabled } from '../../config';
|
|
13
14
|
import { getActiveInteraction } from '../../interaction-metrics';
|
|
14
15
|
import { attachAbortListeners } from './attachAbortListeners';
|
|
@@ -386,6 +387,14 @@ export var VCObserver = /*#__PURE__*/function () {
|
|
|
386
387
|
_this.setAbortReason(abortReason.scroll, time);
|
|
387
388
|
break;
|
|
388
389
|
case 'keydown':
|
|
390
|
+
// Don't abort press interactions on keydown events, as keydown is expected
|
|
391
|
+
// when users press Enter/Space to activate buttons or other interactive elements
|
|
392
|
+
if (fg('platform_ufo_keypress_interaction_abort')) {
|
|
393
|
+
var interaction = getActiveInteraction();
|
|
394
|
+
if ((interaction === null || interaction === void 0 ? void 0 : interaction.type) === 'press') {
|
|
395
|
+
break;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
389
398
|
_this.setAbortReason(abortReason.keypress, time);
|
|
390
399
|
break;
|
|
391
400
|
case 'resize':
|
|
@@ -238,12 +238,13 @@ export var SSRPlaceholderHandlers = /*#__PURE__*/function () {
|
|
|
238
238
|
}, {
|
|
239
239
|
key: "findNearestPlaceholderOrContainer",
|
|
240
240
|
value: function findNearestPlaceholderOrContainer(element) {
|
|
241
|
+
var limit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ANCESTOR_LOOKUP_LIMIT;
|
|
241
242
|
var ancestor = element;
|
|
242
243
|
if (this.isPlaceholderIgnored(element) && element.parentElement) {
|
|
243
244
|
ancestor = element.parentElement;
|
|
244
245
|
}
|
|
245
246
|
var i = 0;
|
|
246
|
-
while (ancestor && i <
|
|
247
|
+
while (ancestor && i < limit) {
|
|
247
248
|
if (this.isPlaceholder(ancestor) || this.isPlaceholderReplacement(ancestor)) {
|
|
248
249
|
return ancestor;
|
|
249
250
|
}
|
|
@@ -318,7 +319,8 @@ export var SSRPlaceholderHandlers = /*#__PURE__*/function () {
|
|
|
318
319
|
}, {
|
|
319
320
|
key: "validateReactComponentMatchToPlaceholderV4",
|
|
320
321
|
value: function validateReactComponentMatchToPlaceholderV4(el) {
|
|
321
|
-
el = fg('platform_ufo_v4_fix_nested_ssr_placeholder') ? this.findNearestPlaceholderOrContainer(el)
|
|
322
|
+
el = fg('platform_ufo_v4_fix_nested_ssr_placeholder') ? this.findNearestPlaceholderOrContainer(el, 2) // We are using 2 due to over-eagerness of the default, only check itself and 1 ancestor
|
|
323
|
+
: this.findNearestPlaceholderContainerIfIgnored(el);
|
|
322
324
|
var id = this.getPlaceholderReplacementId(el);
|
|
323
325
|
return this.staticPlaceholders.has(id);
|
|
324
326
|
}
|
|
@@ -6,6 +6,7 @@ import _createClass from "@babel/runtime/helpers/createClass";
|
|
|
6
6
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
7
7
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
8
8
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
9
|
+
import { getActiveInteraction } from '../../interaction-metrics';
|
|
9
10
|
import { SSRPlaceholderHandlers } from '../vc-observer/observers/ssr-placeholders';
|
|
10
11
|
import EntriesTimeline from './entries-timeline';
|
|
11
12
|
import _getElementName from './get-element-name';
|
|
@@ -106,6 +107,14 @@ var VCObserverNew = /*#__PURE__*/function () {
|
|
|
106
107
|
onEvent: function onEvent(_ref) {
|
|
107
108
|
var time = _ref.time,
|
|
108
109
|
type = _ref.type;
|
|
110
|
+
// Don't abort press interactions on keydown events, as keydown is expected
|
|
111
|
+
// when users press Enter/Space to activate buttons or other interactive elements
|
|
112
|
+
if (type === 'keydown' && fg('platform_ufo_keypress_interaction_abort')) {
|
|
113
|
+
var interaction = getActiveInteraction();
|
|
114
|
+
if ((interaction === null || interaction === void 0 ? void 0 : interaction.type) === 'press') {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
109
118
|
_this.entriesTimeline.push({
|
|
110
119
|
time: time,
|
|
111
120
|
data: {
|
|
@@ -31,7 +31,7 @@ export declare class SSRPlaceholderHandlers {
|
|
|
31
31
|
isPlaceholderV4(element: HTMLElement): boolean;
|
|
32
32
|
isPlaceholderReplacementV4(element: HTMLElement): boolean;
|
|
33
33
|
findNearestPlaceholderContainerIfIgnored(element: HTMLElement): HTMLElement;
|
|
34
|
-
findNearestPlaceholderOrContainer(element: HTMLElement): HTMLElement;
|
|
34
|
+
findNearestPlaceholderOrContainer(element: HTMLElement, limit?: number): HTMLElement;
|
|
35
35
|
checkIfExistedAndSizeMatching(el: HTMLElement): Promise<boolean>;
|
|
36
36
|
checkIfExistedAndSizeMatchingV3(el: HTMLElement): boolean;
|
|
37
37
|
getSize(el: HTMLElement): Promise<Rect>;
|
|
@@ -31,7 +31,7 @@ export declare class SSRPlaceholderHandlers {
|
|
|
31
31
|
isPlaceholderV4(element: HTMLElement): boolean;
|
|
32
32
|
isPlaceholderReplacementV4(element: HTMLElement): boolean;
|
|
33
33
|
findNearestPlaceholderContainerIfIgnored(element: HTMLElement): HTMLElement;
|
|
34
|
-
findNearestPlaceholderOrContainer(element: HTMLElement): HTMLElement;
|
|
34
|
+
findNearestPlaceholderOrContainer(element: HTMLElement, limit?: number): HTMLElement;
|
|
35
35
|
checkIfExistedAndSizeMatching(el: HTMLElement): Promise<boolean>;
|
|
36
36
|
checkIfExistedAndSizeMatchingV3(el: HTMLElement): boolean;
|
|
37
37
|
getSize(el: HTMLElement): Promise<Rect>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/react-ufo",
|
|
3
|
-
"version": "4.15.
|
|
3
|
+
"version": "4.15.13",
|
|
4
4
|
"description": "Parts of React UFO that are publicly available",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -196,6 +196,9 @@
|
|
|
196
196
|
},
|
|
197
197
|
"platform_mark_ufo_segment_first_load": {
|
|
198
198
|
"type": "boolean"
|
|
199
|
+
},
|
|
200
|
+
"platform_ufo_keypress_interaction_abort": {
|
|
201
|
+
"type": "boolean"
|
|
199
202
|
}
|
|
200
203
|
}
|
|
201
204
|
}
|