@atlaskit/react-ufo 4.15.3 → 4.15.5

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.
Files changed (34) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/segment/segment.js +10 -1
  3. package/dist/cjs/segment/ssr-render-profiler.js +79 -0
  4. package/dist/cjs/vc/vc-observer/observers/ssr-placeholders/index.js +7 -0
  5. package/dist/cjs/vc/vc-observer-new/metric-calculator/vcnext/index.js +4 -1
  6. package/dist/cjs/vc/vc-observer-new/viewport-observer/index.js +290 -191
  7. package/dist/cjs/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +45 -2
  8. package/dist/cjs/vc/vc-observer-new/viewport-observer/utils/get-mutated-elements.js +15 -4
  9. package/dist/cjs/vc/vc-observer-new/viewport-observer/utils/is-zero-dimension-rectangle.js +9 -0
  10. package/dist/es2019/segment/segment.js +10 -1
  11. package/dist/es2019/segment/ssr-render-profiler.js +68 -0
  12. package/dist/es2019/vc/vc-observer/observers/ssr-placeholders/index.js +5 -0
  13. package/dist/es2019/vc/vc-observer-new/metric-calculator/vcnext/index.js +4 -1
  14. package/dist/es2019/vc/vc-observer-new/viewport-observer/index.js +158 -81
  15. package/dist/es2019/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +33 -2
  16. package/dist/es2019/vc/vc-observer-new/viewport-observer/utils/get-mutated-elements.js +15 -4
  17. package/dist/es2019/vc/vc-observer-new/viewport-observer/utils/is-zero-dimension-rectangle.js +3 -0
  18. package/dist/esm/segment/segment.js +10 -1
  19. package/dist/esm/segment/ssr-render-profiler.js +72 -0
  20. package/dist/esm/vc/vc-observer/observers/ssr-placeholders/index.js +7 -0
  21. package/dist/esm/vc/vc-observer-new/metric-calculator/vcnext/index.js +4 -1
  22. package/dist/esm/vc/vc-observer-new/viewport-observer/index.js +288 -189
  23. package/dist/esm/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +45 -2
  24. package/dist/esm/vc/vc-observer-new/viewport-observer/utils/get-mutated-elements.js +15 -4
  25. package/dist/esm/vc/vc-observer-new/viewport-observer/utils/is-zero-dimension-rectangle.js +3 -0
  26. package/dist/types/segment/ssr-render-profiler.d.ts +9 -0
  27. package/dist/types/vc/vc-observer/observers/ssr-placeholders/index.d.ts +1 -0
  28. package/dist/types/vc/vc-observer-new/types.d.ts +1 -1
  29. package/dist/types/vc/vc-observer-new/viewport-observer/utils/is-zero-dimension-rectangle.d.ts +1 -0
  30. package/dist/types-ts4.5/segment/ssr-render-profiler.d.ts +9 -0
  31. package/dist/types-ts4.5/vc/vc-observer/observers/ssr-placeholders/index.d.ts +1 -0
  32. package/dist/types-ts4.5/vc/vc-observer-new/types.d.ts +1 -1
  33. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/utils/is-zero-dimension-rectangle.d.ts +1 -0
  34. package/package.json +10 -1
@@ -0,0 +1,72 @@
1
+ var _process;
2
+ import React, { useMemo } from 'react';
3
+ import { getActiveInteraction } from '../interaction-metrics';
4
+
5
+ // These are stored outside react context to be resilient to concurrent mode
6
+ // restarting the start marker from a suspense and losing the initial render
7
+ var startTimes = new Map();
8
+ // Keep track of the last interaction id and reset the start timers if it ever changes.
9
+ // This is to allow multi-step ssr to track the render timers from different "interaction"s seperately
10
+ var lastActiveInteraction;
11
+ function checkActiveInteractionAndResetStartMarksIfSet() {
12
+ var _getActiveInteraction;
13
+ var activeInteractionId = (_getActiveInteraction = getActiveInteraction()) === null || _getActiveInteraction === void 0 ? void 0 : _getActiveInteraction.id;
14
+ if (!!lastActiveInteraction && lastActiveInteraction !== activeInteractionId) {
15
+ startTimes.clear();
16
+ }
17
+ lastActiveInteraction = activeInteractionId;
18
+ }
19
+ var onStartRender = function onStartRender(id) {
20
+ var _startTimes$get;
21
+ if (!startTimes.has(id)) {
22
+ startTimes.set(id, []);
23
+ }
24
+ (_startTimes$get = startTimes.get(id)) === null || _startTimes$get === void 0 || _startTimes$get.push(performance.now());
25
+ };
26
+ var isInSSR = Boolean(globalThis === null || globalThis === void 0 ? void 0 : globalThis.__SERVER__) || typeof process !== 'undefined' && Boolean(((_process = process) === null || _process === void 0 || (_process = _process.env) === null || _process === void 0 ? void 0 : _process.REACT_SSR) || false);
27
+ var ProfilerMarker = function ProfilerMarker(_ref) {
28
+ var onRender = _ref.onRender;
29
+ if (isInSSR) {
30
+ onRender === null || onRender === void 0 || onRender();
31
+ }
32
+ return null;
33
+ };
34
+ export var SsrRenderProfilerInner = function SsrRenderProfilerInner(_ref2) {
35
+ var children = _ref2.children,
36
+ labelStack = _ref2.labelStack,
37
+ _onRender = _ref2.onRender;
38
+ var reactProfilerId = useMemo(function () {
39
+ return labelStack.map(function (l) {
40
+ return l.name;
41
+ }).join('/');
42
+ }, [labelStack]);
43
+ checkActiveInteractionAndResetStartMarksIfSet();
44
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ProfilerMarker, {
45
+ onRender: function onRender() {
46
+ return onStartRender(reactProfilerId);
47
+ }
48
+ }), children, /*#__PURE__*/React.createElement(ProfilerMarker, {
49
+ onRender: function onRender() {
50
+ var startTimesForId = startTimes.get(reactProfilerId);
51
+ if (startTimesForId !== null && startTimesForId !== void 0 && startTimesForId.length) {
52
+ var endTime = performance.now();
53
+ var firstStartTime = startTimesForId[0];
54
+ var lastStartTime = startTimesForId[startTimesForId.length - 1];
55
+ var baseDuration = endTime - lastStartTime;
56
+ var actualDuration = endTime - firstStartTime;
57
+ _onRender('mount',
58
+ // this is incorrect, but on the server there is no mount phase
59
+ actualDuration, baseDuration, firstStartTime, endTime);
60
+ }
61
+ }
62
+ }));
63
+ };
64
+ var SsrRenderProfiler = function SsrRenderProfiler(props) {
65
+ if (isInSSR) {
66
+ return /*#__PURE__*/React.createElement(SsrRenderProfilerInner, props);
67
+ }
68
+
69
+ // ensure structure similar to SSR implementation
70
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ProfilerMarker, null), props.children);
71
+ };
72
+ export default SsrRenderProfiler;
@@ -266,6 +266,13 @@ export var SSRPlaceholderHandlers = /*#__PURE__*/function () {
266
266
  }
267
267
  });
268
268
  }
269
+ }, {
270
+ key: "validateReactComponentMatchToPlaceholderV4",
271
+ value: function validateReactComponentMatchToPlaceholderV4(el) {
272
+ el = this.findNearestPlaceholderContainerIfIgnored(el);
273
+ var id = this.getPlaceholderReplacementId(el);
274
+ return this.staticPlaceholders.has(id);
275
+ }
269
276
  }, {
270
277
  key: "hasSameSizePosition",
271
278
  value: function hasSameSizePosition(rect, boundingClientRect) {
@@ -17,7 +17,10 @@ var getConsideredEntryTypes = function getConsideredEntryTypes() {
17
17
  if (fg('platform_ufo_remove_ssr_placeholder_in_ttvc_v4')) {
18
18
  consideredEntryTypes.push('mutation:ssr-placeholder');
19
19
  }
20
- return ['mutation:display-contents-children-element'];
20
+ if (fg('platform_ufo_detect_zero_dimension_rectangles')) {
21
+ consideredEntryTypes.push('mutation:display-contents-children-attribute');
22
+ }
23
+ return consideredEntryTypes;
21
24
  };
22
25
  var getExcludedEntryTypes = function getExcludedEntryTypes() {
23
26
  var excludedEntryTypes = ['layout-shift:same-rect'];