@atlaskit/react-ufo 3.1.4 → 3.3.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.
Files changed (179) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +11 -0
  3. package/dist/cjs/create-experimental-interaction-metrics-payload/index.js +52 -25
  4. package/dist/cjs/create-payload/index.js +290 -231
  5. package/dist/cjs/interaction-metrics/index.js +61 -23
  6. package/dist/cjs/interaction-metrics/post-interaction-log.js +63 -34
  7. package/dist/cjs/interaction-metrics-init/index.js +26 -7
  8. package/dist/cjs/segment/schedule-on-paint.js +35 -0
  9. package/dist/cjs/segment/segment.js +10 -1
  10. package/dist/cjs/vc/index.js +105 -1
  11. package/dist/cjs/vc/types.js +5 -0
  12. package/dist/cjs/vc/vc-observer/index.js +198 -208
  13. package/dist/cjs/vc/vc-observer-new/entries-timeline/index.js +56 -0
  14. package/dist/cjs/vc/vc-observer-new/get-element-name.js +68 -0
  15. package/dist/cjs/vc/vc-observer-new/index.js +132 -0
  16. package/dist/cjs/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +75 -0
  17. package/dist/cjs/vc/vc-observer-new/metric-calculator/fy25_03/index.js +60 -0
  18. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +274 -0
  19. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +151 -0
  20. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +367 -0
  21. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +397 -0
  22. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +5 -0
  23. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +61 -0
  24. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +151 -0
  25. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +107 -0
  26. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/types.js +5 -0
  27. package/dist/cjs/vc/vc-observer-new/metric-calculator/types.js +5 -0
  28. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.js +16 -0
  29. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.js +16 -0
  30. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.js +16 -0
  31. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/task-yield.js +45 -0
  32. package/dist/cjs/vc/vc-observer-new/types.js +5 -0
  33. package/dist/cjs/vc/vc-observer-new/viewport-observer/index.js +195 -0
  34. package/dist/cjs/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +71 -0
  35. package/dist/cjs/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +65 -0
  36. package/dist/cjs/vc/vc-observer-new/viewport-observer/performance-observer/index.js +58 -0
  37. package/dist/cjs/vc/vc-observer-new/viewport-observer/types.js +1 -0
  38. package/dist/cjs/vc/vc-observer-new/window-event-observer/index.js +54 -0
  39. package/dist/es2019/create-experimental-interaction-metrics-payload/index.js +2 -2
  40. package/dist/es2019/create-payload/index.js +8 -7
  41. package/dist/es2019/interaction-metrics/index.js +3 -3
  42. package/dist/es2019/interaction-metrics/post-interaction-log.js +5 -5
  43. package/dist/es2019/interaction-metrics-init/index.js +26 -7
  44. package/dist/es2019/segment/schedule-on-paint.js +29 -0
  45. package/dist/es2019/segment/segment.js +9 -1
  46. package/dist/es2019/vc/index.js +56 -1
  47. package/dist/es2019/vc/types.js +1 -0
  48. package/dist/es2019/vc/vc-observer/index.js +1 -4
  49. package/dist/es2019/vc/vc-observer-new/entries-timeline/index.js +34 -0
  50. package/dist/es2019/vc/vc-observer-new/get-element-name.js +62 -0
  51. package/dist/es2019/vc/vc-observer-new/index.js +98 -0
  52. package/dist/es2019/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +38 -0
  53. package/dist/es2019/vc/vc-observer-new/metric-calculator/fy25_03/index.js +39 -0
  54. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +194 -0
  55. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +69 -0
  56. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +248 -0
  57. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +261 -0
  58. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +1 -0
  59. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +19 -0
  60. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +98 -0
  61. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +58 -0
  62. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/types.js +1 -0
  63. package/dist/es2019/vc/vc-observer-new/metric-calculator/types.js +1 -0
  64. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.js +9 -0
  65. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.js +9 -0
  66. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.js +10 -0
  67. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/task-yield.js +17 -0
  68. package/dist/es2019/vc/vc-observer-new/types.js +1 -0
  69. package/dist/es2019/vc/vc-observer-new/viewport-observer/index.js +168 -0
  70. package/dist/es2019/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +65 -0
  71. package/dist/es2019/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +48 -0
  72. package/dist/es2019/vc/vc-observer-new/viewport-observer/performance-observer/index.js +41 -0
  73. package/dist/es2019/vc/vc-observer-new/viewport-observer/types.js +0 -0
  74. package/dist/es2019/vc/vc-observer-new/window-event-observer/index.js +36 -0
  75. package/dist/esm/create-experimental-interaction-metrics-payload/index.js +52 -25
  76. package/dist/esm/create-payload/index.js +290 -231
  77. package/dist/esm/interaction-metrics/index.js +61 -23
  78. package/dist/esm/interaction-metrics/post-interaction-log.js +63 -34
  79. package/dist/esm/interaction-metrics-init/index.js +26 -7
  80. package/dist/esm/segment/schedule-on-paint.js +29 -0
  81. package/dist/esm/segment/segment.js +10 -1
  82. package/dist/esm/vc/index.js +104 -1
  83. package/dist/esm/vc/types.js +1 -0
  84. package/dist/esm/vc/vc-observer/index.js +198 -208
  85. package/dist/esm/vc/vc-observer-new/entries-timeline/index.js +50 -0
  86. package/dist/esm/vc/vc-observer-new/get-element-name.js +62 -0
  87. package/dist/esm/vc/vc-observer-new/index.js +126 -0
  88. package/dist/esm/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +69 -0
  89. package/dist/esm/vc/vc-observer-new/metric-calculator/fy25_03/index.js +54 -0
  90. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +268 -0
  91. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +143 -0
  92. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +361 -0
  93. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +390 -0
  94. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +1 -0
  95. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +54 -0
  96. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +144 -0
  97. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +100 -0
  98. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/types.js +1 -0
  99. package/dist/esm/vc/vc-observer-new/metric-calculator/types.js +1 -0
  100. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.js +10 -0
  101. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.js +10 -0
  102. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.js +10 -0
  103. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/task-yield.js +38 -0
  104. package/dist/esm/vc/vc-observer-new/types.js +1 -0
  105. package/dist/esm/vc/vc-observer-new/viewport-observer/index.js +189 -0
  106. package/dist/esm/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +65 -0
  107. package/dist/esm/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +59 -0
  108. package/dist/esm/vc/vc-observer-new/viewport-observer/performance-observer/index.js +51 -0
  109. package/dist/esm/vc/vc-observer-new/viewport-observer/types.js +0 -0
  110. package/dist/esm/vc/vc-observer-new/window-event-observer/index.js +48 -0
  111. package/dist/types/common/index.d.ts +1 -0
  112. package/dist/types/create-experimental-interaction-metrics-payload/index.d.ts +3 -2
  113. package/dist/types/create-payload/index.d.ts +4 -4
  114. package/dist/types/interaction-metrics/post-interaction-log.d.ts +3 -2
  115. package/dist/types/segment/schedule-on-paint.d.ts +2 -0
  116. package/dist/types/vc/index.d.ts +3 -3
  117. package/dist/types/vc/types.d.ts +34 -0
  118. package/dist/types/vc/vc-observer/index.d.ts +5 -21
  119. package/dist/types/vc/vc-observer-new/entries-timeline/index.d.ts +13 -0
  120. package/dist/types/vc/vc-observer-new/get-element-name.d.ts +8 -0
  121. package/dist/types/vc/vc-observer-new/index.d.ts +18 -0
  122. package/dist/types/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +9 -0
  123. package/dist/types/vc/vc-observer-new/metric-calculator/fy25_03/index.d.ts +7 -0
  124. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.d.ts +91 -0
  125. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts +4 -0
  126. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.d.ts +39 -0
  127. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts +8 -0
  128. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.d.ts +43 -0
  129. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/index.d.ts +3 -0
  130. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.d.ts +11 -0
  131. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.d.ts +23 -0
  132. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/types.d.ts +9 -0
  133. package/dist/types/vc/vc-observer-new/metric-calculator/types.d.ts +20 -0
  134. package/dist/types/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.d.ts +1 -0
  135. package/dist/types/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.d.ts +1 -0
  136. package/dist/types/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.d.ts +2 -0
  137. package/dist/types/vc/vc-observer-new/metric-calculator/utils/task-yield.d.ts +1 -0
  138. package/dist/types/vc/vc-observer-new/types.d.ts +21 -0
  139. package/dist/types/vc/vc-observer-new/viewport-observer/index.d.ts +22 -0
  140. package/dist/types/vc/vc-observer-new/viewport-observer/intersection-observer/index.d.ts +30 -0
  141. package/dist/types/vc/vc-observer-new/viewport-observer/mutation-observer/index.d.ts +14 -0
  142. package/dist/types/vc/vc-observer-new/viewport-observer/performance-observer/index.d.ts +14 -0
  143. package/dist/types/vc/vc-observer-new/viewport-observer/types.d.ts +10 -0
  144. package/dist/types/vc/vc-observer-new/window-event-observer/index.d.ts +17 -0
  145. package/dist/types-ts4.5/common/index.d.ts +1 -0
  146. package/dist/types-ts4.5/create-experimental-interaction-metrics-payload/index.d.ts +3 -2
  147. package/dist/types-ts4.5/create-payload/index.d.ts +4 -4
  148. package/dist/types-ts4.5/interaction-metrics/post-interaction-log.d.ts +3 -2
  149. package/dist/types-ts4.5/segment/schedule-on-paint.d.ts +2 -0
  150. package/dist/types-ts4.5/vc/index.d.ts +3 -3
  151. package/dist/types-ts4.5/vc/types.d.ts +34 -0
  152. package/dist/types-ts4.5/vc/vc-observer/index.d.ts +5 -21
  153. package/dist/types-ts4.5/vc/vc-observer-new/entries-timeline/index.d.ts +13 -0
  154. package/dist/types-ts4.5/vc/vc-observer-new/get-element-name.d.ts +8 -0
  155. package/dist/types-ts4.5/vc/vc-observer-new/index.d.ts +18 -0
  156. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +9 -0
  157. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/fy25_03/index.d.ts +7 -0
  158. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.d.ts +91 -0
  159. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts +4 -0
  160. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.d.ts +39 -0
  161. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts +8 -0
  162. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.d.ts +43 -0
  163. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/index.d.ts +3 -0
  164. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.d.ts +11 -0
  165. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.d.ts +23 -0
  166. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/types.d.ts +9 -0
  167. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/types.d.ts +20 -0
  168. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.d.ts +1 -0
  169. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.d.ts +1 -0
  170. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.d.ts +2 -0
  171. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/task-yield.d.ts +1 -0
  172. package/dist/types-ts4.5/vc/vc-observer-new/types.d.ts +21 -0
  173. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/index.d.ts +22 -0
  174. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/intersection-observer/index.d.ts +30 -0
  175. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/mutation-observer/index.d.ts +14 -0
  176. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/performance-observer/index.d.ts +14 -0
  177. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/types.d.ts +10 -0
  178. package/dist/types-ts4.5/vc/vc-observer-new/window-event-observer/index.d.ts +17 -0
  179. package/package.json +13 -1
@@ -0,0 +1,65 @@
1
+ function isValidEntry(entry) {
2
+ return entry.isIntersecting && entry.intersectionRect.width > 0 && entry.intersectionRect.height > 0;
3
+ }
4
+ export function createIntersectionObserver(args) {
5
+ if (!window || typeof window.IntersectionObserver !== 'function') {
6
+ return null;
7
+ }
8
+ const callbacksPerElement = new WeakMap();
9
+ const observer = new IntersectionObserver(entries => {
10
+ var _args$onObserved;
11
+ const validEntries = [];
12
+ const startTime = performance.now();
13
+ entries.forEach(entry => {
14
+ var _mutationTag;
15
+ if (!(entry.target instanceof HTMLElement) || !isValidEntry(entry)) {
16
+ return;
17
+ }
18
+ let mutationTag = null;
19
+ let mutationData = null;
20
+ const tagOrCallback = callbacksPerElement.get(entry.target);
21
+ if (typeof tagOrCallback === 'function') {
22
+ const tagOrCallbackResult = tagOrCallback({
23
+ target: entry.target,
24
+ rect: entry.intersectionRect
25
+ });
26
+ if (!tagOrCallbackResult) {
27
+ mutationTag = 'unknown';
28
+ } else if (typeof tagOrCallbackResult === 'string') {
29
+ mutationTag = tagOrCallbackResult;
30
+ } else {
31
+ mutationTag = tagOrCallbackResult.type;
32
+ mutationData = tagOrCallbackResult.mutationData;
33
+ }
34
+ } else if (typeof tagOrCallback === 'string') {
35
+ mutationTag = tagOrCallback;
36
+ }
37
+ args.onEntry({
38
+ target: entry.target,
39
+ rect: entry.intersectionRect,
40
+ time: entry.time,
41
+ type: (_mutationTag = mutationTag) !== null && _mutationTag !== void 0 ? _mutationTag : 'unknown',
42
+ mutationData
43
+ });
44
+ validEntries.push(new WeakRef(entry.target));
45
+ callbacksPerElement.delete(entry.target);
46
+ observer.unobserve(entry.target);
47
+ });
48
+ (_args$onObserved = args.onObserved) === null || _args$onObserved === void 0 ? void 0 : _args$onObserved.call(args, {
49
+ time: startTime,
50
+ elements: validEntries
51
+ });
52
+ });
53
+ return {
54
+ disconnect: () => {
55
+ observer.disconnect();
56
+ },
57
+ unobserve: target => {
58
+ observer.unobserve(target);
59
+ },
60
+ watchAndTag: (target, tagOrCallback) => {
61
+ callbacksPerElement.set(target, tagOrCallback);
62
+ observer.observe(target);
63
+ }
64
+ };
65
+ }
@@ -0,0 +1,48 @@
1
+ export default function createMutationObserver({
2
+ onAttributeMutation,
3
+ onChildListMutation,
4
+ onMutationFinished
5
+ }) {
6
+ if (!window || typeof window.IntersectionObserver !== 'function') {
7
+ return null;
8
+ }
9
+ const observer = new MutationObserver(mutations => {
10
+ const addedNodes = [];
11
+ const removedNodes = [];
12
+ const targets = [];
13
+ for (const mut of mutations) {
14
+ if (!(mut.target instanceof HTMLElement)) {
15
+ continue;
16
+ }
17
+ if (mut.type === 'attributes') {
18
+ var _mut$attributeName;
19
+ onAttributeMutation({
20
+ target: mut.target,
21
+ attributeName: (_mut$attributeName = mut.attributeName) !== null && _mut$attributeName !== void 0 ? _mut$attributeName : 'unknown'
22
+ });
23
+ continue;
24
+ } else if (mut.type === 'childList') {
25
+ var _mut$addedNodes, _mut$removedNodes;
26
+ ((_mut$addedNodes = mut.addedNodes) !== null && _mut$addedNodes !== void 0 ? _mut$addedNodes : []).forEach(node => {
27
+ if (node instanceof HTMLElement) {
28
+ addedNodes.push(node);
29
+ }
30
+ });
31
+ ((_mut$removedNodes = mut.removedNodes) !== null && _mut$removedNodes !== void 0 ? _mut$removedNodes : []).forEach(node => {
32
+ if (node instanceof HTMLElement) {
33
+ removedNodes.push(node);
34
+ }
35
+ });
36
+ }
37
+ targets.push(mut.target);
38
+ }
39
+ onChildListMutation({
40
+ addedNodes,
41
+ removedNodes
42
+ });
43
+ onMutationFinished === null || onMutationFinished === void 0 ? void 0 : onMutationFinished({
44
+ targets
45
+ });
46
+ });
47
+ return observer;
48
+ }
@@ -0,0 +1,41 @@
1
+ // The LayoutShiftAttribution API is returning the numbers on physical dimension
2
+ export function convertPhysicalToLogicalResolution(rect) {
3
+ if (typeof window.devicePixelRatio !== 'number') {
4
+ return rect;
5
+ }
6
+ if (window.devicePixelRatio === 1) {
7
+ return rect;
8
+ }
9
+
10
+ // eslint-disable-next-line compat/compat
11
+ return new DOMRect(rect.x / window.devicePixelRatio, rect.y / window.devicePixelRatio, rect.width / window.devicePixelRatio, rect.height / window.devicePixelRatio);
12
+ }
13
+ export default function createPerformanceObserver(args) {
14
+ if (!window || typeof window.PerformanceObserver !== 'function') {
15
+ return null;
16
+ }
17
+ const {
18
+ onLayoutShift
19
+ } = args;
20
+ const observer = new PerformanceObserver(entries => {
21
+ for (const entry of entries.getEntries()) {
22
+ if (entry.entryType === 'layout-shift') {
23
+ // Ignored via go/ees005
24
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
25
+ const changedRects = entry.sources.reduceRight((acc, attr) => {
26
+ acc.push({
27
+ rect: convertPhysicalToLogicalResolution(attr.currentRect),
28
+ previousRect: convertPhysicalToLogicalResolution(attr.previousRect),
29
+ node: attr.node
30
+ });
31
+ return acc;
32
+ }, []);
33
+ onLayoutShift({
34
+ time: entry.startTime,
35
+ changedRects
36
+ });
37
+ }
38
+ }
39
+ });
40
+ return observer;
41
+ }
@@ -0,0 +1,36 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import { bind } from 'bind-event-listener';
3
+ export default class WindowEventObserver {
4
+ constructor(opts) {
5
+ _defineProperty(this, "unbindFns", []);
6
+ this.onEvent = opts.onEvent;
7
+ }
8
+ bindEvent(type) {
9
+ const unbindCallback = bind(window, {
10
+ type,
11
+ listener: event => {
12
+ this.onEvent({
13
+ time: event.timeStamp,
14
+ type,
15
+ event
16
+ });
17
+ },
18
+ options: {
19
+ passive: true
20
+ }
21
+ });
22
+ this.unbindFns.push(unbindCallback);
23
+ }
24
+ start() {
25
+ this.bindEvent('wheel');
26
+ this.bindEvent('scroll');
27
+ this.bindEvent('keydown');
28
+ this.bindEvent('resize');
29
+ }
30
+ stop() {
31
+ this.unbindFns.forEach(cb => {
32
+ cb();
33
+ });
34
+ this.unbindFns = [];
35
+ }
36
+ }
@@ -1,6 +1,8 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
1
2
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
3
  import _createClass from "@babel/runtime/helpers/createClass";
3
4
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
5
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
4
6
  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; }
5
7
  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; }
6
8
  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; } } }; }
@@ -77,28 +79,53 @@ export var ExperimentalVCMetrics = /*#__PURE__*/function () {
77
79
  }]);
78
80
  }();
79
81
  export var experimentalVC = new ExperimentalVCMetrics();
80
- export var getExperimentalVCMetrics = function getExperimentalVCMetrics(interaction) {
81
- if (experimentalVC.vcObserver) {
82
- var _interaction$apdex;
83
- var prefix = 'ufo-experimental';
84
- var result = experimentalVC.vcObserver.getVCResult({
85
- start: interaction.start,
86
- stop: interaction.end,
87
- tti: (_interaction$apdex = interaction.apdex) === null || _interaction$apdex === void 0 || (_interaction$apdex = _interaction$apdex[0]) === null || _interaction$apdex === void 0 ? void 0 : _interaction$apdex.stopTime,
88
- prefix: prefix,
89
- vc: interaction.vc
90
- });
91
- var VC = result === null || result === void 0 ? void 0 : result['metrics:vc'];
92
- if (!VC || !(result !== null && result !== void 0 && result["".concat(prefix, ":vc:clean")])) {
93
- return result;
94
- }
95
- var pageVisibilityUpToTTAI = getPageVisibilityState(interaction.start, interaction.end);
96
- if (interaction.abortReason || pageVisibilityUpToTTAI !== 'visible') {
97
- return result;
98
- }
99
- return _objectSpread(_objectSpread({}, result), {}, {
100
- 'metric:experimental:vc90': VC['90']
101
- });
102
- }
103
- return null;
104
- };
82
+ export var getExperimentalVCMetrics = /*#__PURE__*/function () {
83
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(interaction) {
84
+ var _interaction$apdex, prefix, result, VC, pageVisibilityUpToTTAI;
85
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
86
+ while (1) switch (_context.prev = _context.next) {
87
+ case 0:
88
+ if (!experimentalVC.vcObserver) {
89
+ _context.next = 12;
90
+ break;
91
+ }
92
+ prefix = 'ufo-experimental';
93
+ _context.next = 4;
94
+ return experimentalVC.vcObserver.getVCResult({
95
+ start: interaction.start,
96
+ stop: interaction.end,
97
+ tti: (_interaction$apdex = interaction.apdex) === null || _interaction$apdex === void 0 || (_interaction$apdex = _interaction$apdex[0]) === null || _interaction$apdex === void 0 ? void 0 : _interaction$apdex.stopTime,
98
+ prefix: prefix,
99
+ vc: interaction.vc
100
+ });
101
+ case 4:
102
+ result = _context.sent;
103
+ VC = result === null || result === void 0 ? void 0 : result['metrics:vc'];
104
+ if (!(!VC || !(result !== null && result !== void 0 && result["".concat(prefix, ":vc:clean")]))) {
105
+ _context.next = 8;
106
+ break;
107
+ }
108
+ return _context.abrupt("return", result);
109
+ case 8:
110
+ pageVisibilityUpToTTAI = getPageVisibilityState(interaction.start, interaction.end);
111
+ if (!(interaction.abortReason || pageVisibilityUpToTTAI !== 'visible')) {
112
+ _context.next = 11;
113
+ break;
114
+ }
115
+ return _context.abrupt("return", result);
116
+ case 11:
117
+ return _context.abrupt("return", _objectSpread(_objectSpread({}, result), {}, {
118
+ 'metric:experimental:vc90': VC['90']
119
+ }));
120
+ case 12:
121
+ return _context.abrupt("return", null);
122
+ case 13:
123
+ case "end":
124
+ return _context.stop();
125
+ }
126
+ }, _callee);
127
+ }));
128
+ return function getExperimentalVCMetrics(_x) {
129
+ return _ref2.apply(this, arguments);
130
+ };
131
+ }();