@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.
- package/CHANGELOG.md +16 -0
- package/README.md +11 -0
- package/dist/cjs/create-experimental-interaction-metrics-payload/index.js +52 -25
- package/dist/cjs/create-payload/index.js +290 -231
- package/dist/cjs/interaction-metrics/index.js +61 -23
- package/dist/cjs/interaction-metrics/post-interaction-log.js +63 -34
- package/dist/cjs/interaction-metrics-init/index.js +26 -7
- package/dist/cjs/segment/schedule-on-paint.js +35 -0
- package/dist/cjs/segment/segment.js +10 -1
- package/dist/cjs/vc/index.js +105 -1
- package/dist/cjs/vc/types.js +5 -0
- package/dist/cjs/vc/vc-observer/index.js +198 -208
- package/dist/cjs/vc/vc-observer-new/entries-timeline/index.js +56 -0
- package/dist/cjs/vc/vc-observer-new/get-element-name.js +68 -0
- package/dist/cjs/vc/vc-observer-new/index.js +132 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +75 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/fy25_03/index.js +60 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +274 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +151 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +367 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +397 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +5 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +61 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +151 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +107 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/types.js +5 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/types.js +5 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.js +16 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.js +16 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.js +16 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/task-yield.js +45 -0
- package/dist/cjs/vc/vc-observer-new/types.js +5 -0
- package/dist/cjs/vc/vc-observer-new/viewport-observer/index.js +195 -0
- package/dist/cjs/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +71 -0
- package/dist/cjs/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +65 -0
- package/dist/cjs/vc/vc-observer-new/viewport-observer/performance-observer/index.js +58 -0
- package/dist/cjs/vc/vc-observer-new/viewport-observer/types.js +1 -0
- package/dist/cjs/vc/vc-observer-new/window-event-observer/index.js +54 -0
- package/dist/es2019/create-experimental-interaction-metrics-payload/index.js +2 -2
- package/dist/es2019/create-payload/index.js +8 -7
- package/dist/es2019/interaction-metrics/index.js +3 -3
- package/dist/es2019/interaction-metrics/post-interaction-log.js +5 -5
- package/dist/es2019/interaction-metrics-init/index.js +26 -7
- package/dist/es2019/segment/schedule-on-paint.js +29 -0
- package/dist/es2019/segment/segment.js +9 -1
- package/dist/es2019/vc/index.js +56 -1
- package/dist/es2019/vc/types.js +1 -0
- package/dist/es2019/vc/vc-observer/index.js +1 -4
- package/dist/es2019/vc/vc-observer-new/entries-timeline/index.js +34 -0
- package/dist/es2019/vc/vc-observer-new/get-element-name.js +62 -0
- package/dist/es2019/vc/vc-observer-new/index.js +98 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +38 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/fy25_03/index.js +39 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +194 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +69 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +248 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +261 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +1 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +19 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +98 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +58 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/types.js +1 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/types.js +1 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.js +9 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.js +9 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.js +10 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/task-yield.js +17 -0
- package/dist/es2019/vc/vc-observer-new/types.js +1 -0
- package/dist/es2019/vc/vc-observer-new/viewport-observer/index.js +168 -0
- package/dist/es2019/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +65 -0
- package/dist/es2019/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +48 -0
- package/dist/es2019/vc/vc-observer-new/viewport-observer/performance-observer/index.js +41 -0
- package/dist/es2019/vc/vc-observer-new/viewport-observer/types.js +0 -0
- package/dist/es2019/vc/vc-observer-new/window-event-observer/index.js +36 -0
- package/dist/esm/create-experimental-interaction-metrics-payload/index.js +52 -25
- package/dist/esm/create-payload/index.js +290 -231
- package/dist/esm/interaction-metrics/index.js +61 -23
- package/dist/esm/interaction-metrics/post-interaction-log.js +63 -34
- package/dist/esm/interaction-metrics-init/index.js +26 -7
- package/dist/esm/segment/schedule-on-paint.js +29 -0
- package/dist/esm/segment/segment.js +10 -1
- package/dist/esm/vc/index.js +104 -1
- package/dist/esm/vc/types.js +1 -0
- package/dist/esm/vc/vc-observer/index.js +198 -208
- package/dist/esm/vc/vc-observer-new/entries-timeline/index.js +50 -0
- package/dist/esm/vc/vc-observer-new/get-element-name.js +62 -0
- package/dist/esm/vc/vc-observer-new/index.js +126 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +69 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/fy25_03/index.js +54 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +268 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +143 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +361 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +390 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +1 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +54 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +144 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +100 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/types.js +1 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/types.js +1 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.js +10 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.js +10 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.js +10 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/utils/task-yield.js +38 -0
- package/dist/esm/vc/vc-observer-new/types.js +1 -0
- package/dist/esm/vc/vc-observer-new/viewport-observer/index.js +189 -0
- package/dist/esm/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +65 -0
- package/dist/esm/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +59 -0
- package/dist/esm/vc/vc-observer-new/viewport-observer/performance-observer/index.js +51 -0
- package/dist/esm/vc/vc-observer-new/viewport-observer/types.js +0 -0
- package/dist/esm/vc/vc-observer-new/window-event-observer/index.js +48 -0
- package/dist/types/common/index.d.ts +1 -0
- package/dist/types/create-experimental-interaction-metrics-payload/index.d.ts +3 -2
- package/dist/types/create-payload/index.d.ts +4 -4
- package/dist/types/interaction-metrics/post-interaction-log.d.ts +3 -2
- package/dist/types/segment/schedule-on-paint.d.ts +2 -0
- package/dist/types/vc/index.d.ts +3 -3
- package/dist/types/vc/types.d.ts +34 -0
- package/dist/types/vc/vc-observer/index.d.ts +5 -21
- package/dist/types/vc/vc-observer-new/entries-timeline/index.d.ts +13 -0
- package/dist/types/vc/vc-observer-new/get-element-name.d.ts +8 -0
- package/dist/types/vc/vc-observer-new/index.d.ts +18 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +9 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/fy25_03/index.d.ts +7 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.d.ts +91 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts +4 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.d.ts +39 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts +8 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.d.ts +43 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/index.d.ts +3 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.d.ts +11 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.d.ts +23 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/types.d.ts +9 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/types.d.ts +20 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.d.ts +1 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.d.ts +1 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.d.ts +2 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/utils/task-yield.d.ts +1 -0
- package/dist/types/vc/vc-observer-new/types.d.ts +21 -0
- package/dist/types/vc/vc-observer-new/viewport-observer/index.d.ts +22 -0
- package/dist/types/vc/vc-observer-new/viewport-observer/intersection-observer/index.d.ts +30 -0
- package/dist/types/vc/vc-observer-new/viewport-observer/mutation-observer/index.d.ts +14 -0
- package/dist/types/vc/vc-observer-new/viewport-observer/performance-observer/index.d.ts +14 -0
- package/dist/types/vc/vc-observer-new/viewport-observer/types.d.ts +10 -0
- package/dist/types/vc/vc-observer-new/window-event-observer/index.d.ts +17 -0
- package/dist/types-ts4.5/common/index.d.ts +1 -0
- package/dist/types-ts4.5/create-experimental-interaction-metrics-payload/index.d.ts +3 -2
- package/dist/types-ts4.5/create-payload/index.d.ts +4 -4
- package/dist/types-ts4.5/interaction-metrics/post-interaction-log.d.ts +3 -2
- package/dist/types-ts4.5/segment/schedule-on-paint.d.ts +2 -0
- package/dist/types-ts4.5/vc/index.d.ts +3 -3
- package/dist/types-ts4.5/vc/types.d.ts +34 -0
- package/dist/types-ts4.5/vc/vc-observer/index.d.ts +5 -21
- package/dist/types-ts4.5/vc/vc-observer-new/entries-timeline/index.d.ts +13 -0
- package/dist/types-ts4.5/vc/vc-observer-new/get-element-name.d.ts +8 -0
- package/dist/types-ts4.5/vc/vc-observer-new/index.d.ts +18 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +9 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/fy25_03/index.d.ts +7 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.d.ts +91 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts +4 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.d.ts +39 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts +8 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.d.ts +43 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/index.d.ts +3 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.d.ts +11 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.d.ts +23 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/types.d.ts +9 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/types.d.ts +20 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.d.ts +1 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.d.ts +1 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.d.ts +2 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/task-yield.d.ts +1 -0
- package/dist/types-ts4.5/vc/vc-observer-new/types.d.ts +21 -0
- package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/index.d.ts +22 -0
- package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/intersection-observer/index.d.ts +30 -0
- package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/mutation-observer/index.d.ts +14 -0
- package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/performance-observer/index.d.ts +14 -0
- package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/types.d.ts +10 -0
- package/dist/types-ts4.5/vc/vc-observer-new/window-event-observer/index.d.ts +17 -0
- package/package.json +13 -1
package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = calculateTTVCPercentiles;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
|
+
var _isViewportEntryData = _interopRequireDefault(require("../../utils/is-viewport-entry-data"));
|
|
12
|
+
var _taskYield = _interopRequireDefault(require("../../utils/task-yield"));
|
|
13
|
+
var _calcUnionArea = _interopRequireDefault(require("./calc-union-area"));
|
|
14
|
+
function calculateTTVCPercentiles(_x) {
|
|
15
|
+
return _calculateTTVCPercentiles.apply(this, arguments);
|
|
16
|
+
}
|
|
17
|
+
function _calculateTTVCPercentiles() {
|
|
18
|
+
_calculateTTVCPercentiles = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
|
|
19
|
+
var orderedEntries, viewport, percentiles, sortedPercentiles, viewportArea, checkpoints, activeRects, removeActiveRect, domElementsBuffer, i, iEntry, iEntryData, rect, elementName, exclusionArea, currentArea, currVCPercent, matchesAnyCheckpoints, _checkpoint, domElements;
|
|
20
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
21
|
+
while (1) switch (_context.prev = _context.next) {
|
|
22
|
+
case 0:
|
|
23
|
+
orderedEntries = _ref.orderedEntries, viewport = _ref.viewport, percentiles = _ref.percentiles;
|
|
24
|
+
sortedPercentiles = (0, _toConsumableArray2.default)(percentiles).sort(function (a, b) {
|
|
25
|
+
return a - b;
|
|
26
|
+
});
|
|
27
|
+
viewportArea = viewport.width * viewport.height;
|
|
28
|
+
checkpoints = {};
|
|
29
|
+
activeRects = orderedEntries.filter(function (e) {
|
|
30
|
+
return (0, _isViewportEntryData.default)(e.data);
|
|
31
|
+
}).map(function (e) {
|
|
32
|
+
return e.data.rect;
|
|
33
|
+
});
|
|
34
|
+
removeActiveRect = function removeActiveRect(rectToRemove) {
|
|
35
|
+
var index = activeRects.indexOf(rectToRemove);
|
|
36
|
+
// Check if the element exists in the array
|
|
37
|
+
if (index !== -1) {
|
|
38
|
+
// Remove the element at the found index
|
|
39
|
+
activeRects.splice(index, 1);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
domElementsBuffer = new Set();
|
|
43
|
+
i = 0;
|
|
44
|
+
case 8:
|
|
45
|
+
if (!(i < orderedEntries.length)) {
|
|
46
|
+
_context.next = 36;
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
iEntry = orderedEntries[i];
|
|
50
|
+
iEntryData = iEntry.data;
|
|
51
|
+
if ((0, _isViewportEntryData.default)(iEntryData)) {
|
|
52
|
+
_context.next = 13;
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
return _context.abrupt("continue", 33);
|
|
56
|
+
case 13:
|
|
57
|
+
rect = iEntryData.rect, elementName = iEntryData.elementName;
|
|
58
|
+
domElementsBuffer.add(elementName);
|
|
59
|
+
removeActiveRect(rect);
|
|
60
|
+
exclusionArea = (0, _calcUnionArea.default)(activeRects);
|
|
61
|
+
currentArea = viewportArea - exclusionArea;
|
|
62
|
+
currVCPercent = Math.round(currentArea / viewportArea * 100);
|
|
63
|
+
matchesAnyCheckpoints = false;
|
|
64
|
+
case 20:
|
|
65
|
+
if (!(sortedPercentiles.length > 0 && currVCPercent >= sortedPercentiles[0])) {
|
|
66
|
+
_context.next = 29;
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
_checkpoint = sortedPercentiles.shift();
|
|
70
|
+
domElements = (0, _toConsumableArray2.default)(domElementsBuffer);
|
|
71
|
+
if (_checkpoint) {
|
|
72
|
+
_context.next = 25;
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
return _context.abrupt("break", 29);
|
|
76
|
+
case 25:
|
|
77
|
+
matchesAnyCheckpoints = true;
|
|
78
|
+
checkpoints[_checkpoint.toString()] = {
|
|
79
|
+
t: iEntry.time,
|
|
80
|
+
e: domElements
|
|
81
|
+
};
|
|
82
|
+
_context.next = 20;
|
|
83
|
+
break;
|
|
84
|
+
case 29:
|
|
85
|
+
if (matchesAnyCheckpoints) {
|
|
86
|
+
domElementsBuffer.clear();
|
|
87
|
+
}
|
|
88
|
+
if (!(i % 500 === 0)) {
|
|
89
|
+
_context.next = 33;
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
_context.next = 33;
|
|
93
|
+
return (0, _taskYield.default)();
|
|
94
|
+
case 33:
|
|
95
|
+
i++;
|
|
96
|
+
_context.next = 8;
|
|
97
|
+
break;
|
|
98
|
+
case 36:
|
|
99
|
+
return _context.abrupt("return", checkpoints);
|
|
100
|
+
case 37:
|
|
101
|
+
case "end":
|
|
102
|
+
return _context.stop();
|
|
103
|
+
}
|
|
104
|
+
}, _callee);
|
|
105
|
+
}));
|
|
106
|
+
return _calculateTTVCPercentiles.apply(this, arguments);
|
|
107
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = getViewportHeight;
|
|
7
|
+
function getViewportHeight() {
|
|
8
|
+
var document = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.document;
|
|
9
|
+
var documentHeight;
|
|
10
|
+
try {
|
|
11
|
+
documentHeight = document.documentElement.clientHeight || 0;
|
|
12
|
+
} catch (e) {
|
|
13
|
+
documentHeight = 0;
|
|
14
|
+
}
|
|
15
|
+
return Math.max(documentHeight, window.innerHeight || 0);
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = getViewportWidth;
|
|
7
|
+
function getViewportWidth() {
|
|
8
|
+
var document = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.document;
|
|
9
|
+
var documentWidth;
|
|
10
|
+
try {
|
|
11
|
+
documentWidth = document.documentElement.clientWidth || 0;
|
|
12
|
+
} catch (e) {
|
|
13
|
+
documentWidth = 0;
|
|
14
|
+
}
|
|
15
|
+
return Math.max(documentWidth, window.innerWidth || 0);
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = isViewportEntryData;
|
|
7
|
+
function isViewportEntryData(data) {
|
|
8
|
+
if (data) {
|
|
9
|
+
var hasElementName = typeof data.elementName === 'string';
|
|
10
|
+
var hasRect = typeof data.rect !== 'undefined';
|
|
11
|
+
if (hasRect && hasElementName) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = taskYield;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
// See https://developer.mozilla.org/en-US/docs/Web/API/Prioritized_Task_Scheduling_API
|
|
11
|
+
function taskYield() {
|
|
12
|
+
return _taskYield.apply(this, arguments);
|
|
13
|
+
}
|
|
14
|
+
function _taskYield() {
|
|
15
|
+
_taskYield = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
16
|
+
var resolve, p;
|
|
17
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
18
|
+
while (1) switch (_context.prev = _context.next) {
|
|
19
|
+
case 0:
|
|
20
|
+
if (!('scheduler' in globalThis &&
|
|
21
|
+
// @ts-ignore
|
|
22
|
+
'yield' in globalThis.scheduler)) {
|
|
23
|
+
_context.next = 4;
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
_context.next = 3;
|
|
27
|
+
return scheduler.yield();
|
|
28
|
+
case 3:
|
|
29
|
+
return _context.abrupt("return");
|
|
30
|
+
case 4:
|
|
31
|
+
resolve = function resolve() {};
|
|
32
|
+
p = new Promise(function (a) {
|
|
33
|
+
resolve = a;
|
|
34
|
+
});
|
|
35
|
+
setTimeout(resolve, 0);
|
|
36
|
+
_context.next = 9;
|
|
37
|
+
return p;
|
|
38
|
+
case 9:
|
|
39
|
+
case "end":
|
|
40
|
+
return _context.stop();
|
|
41
|
+
}
|
|
42
|
+
}, _callee);
|
|
43
|
+
}));
|
|
44
|
+
return _taskYield.apply(this, arguments);
|
|
45
|
+
}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
9
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
|
+
var _vcUtils = require("../../vc-observer/media-wrapper/vc-utils");
|
|
11
|
+
var _intersectionObserver = require("./intersection-observer");
|
|
12
|
+
var _mutationObserver = _interopRequireDefault(require("./mutation-observer"));
|
|
13
|
+
var _performanceObserver = _interopRequireDefault(require("./performance-observer"));
|
|
14
|
+
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
|
+
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; } }
|
|
16
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
17
|
+
function isElementVisible(element) {
|
|
18
|
+
if (!(element instanceof HTMLElement)) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
var visible = element.checkVisibility({
|
|
23
|
+
// @ts-expect-error
|
|
24
|
+
visibilityProperty: true
|
|
25
|
+
});
|
|
26
|
+
return visible;
|
|
27
|
+
} catch (e) {
|
|
28
|
+
// there is no support for checkVisibility
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function sameRectSize(a, b) {
|
|
33
|
+
if (!a || !b) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
return a.width === b.width && a.height === b.height;
|
|
37
|
+
}
|
|
38
|
+
function sameRectDimensions(a, b) {
|
|
39
|
+
if (!a || !b) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
return a.width === b.width && a.height === b.height && a.x === b.x && a.y === b.y;
|
|
43
|
+
}
|
|
44
|
+
var ViewportObserver = exports.default = /*#__PURE__*/function () {
|
|
45
|
+
function ViewportObserver(_ref) {
|
|
46
|
+
var _this = this;
|
|
47
|
+
var onChange = _ref.onChange;
|
|
48
|
+
(0, _classCallCheck2.default)(this, ViewportObserver);
|
|
49
|
+
this.mapVisibleNodeRects = new WeakMap();
|
|
50
|
+
this.intersectionObserver = (0, _intersectionObserver.createIntersectionObserver)({
|
|
51
|
+
onEntry: function onEntry(_ref2) {
|
|
52
|
+
var target = _ref2.target,
|
|
53
|
+
rect = _ref2.rect,
|
|
54
|
+
time = _ref2.time,
|
|
55
|
+
type = _ref2.type,
|
|
56
|
+
mutationData = _ref2.mutationData;
|
|
57
|
+
var visible = isElementVisible(target);
|
|
58
|
+
var lastElementRect = _this.mapVisibleNodeRects.get(target);
|
|
59
|
+
_this.mapVisibleNodeRects.set(target, rect);
|
|
60
|
+
onChange({
|
|
61
|
+
time: time,
|
|
62
|
+
type: type,
|
|
63
|
+
elementRef: new WeakRef(target),
|
|
64
|
+
visible: visible,
|
|
65
|
+
rect: rect,
|
|
66
|
+
previousRect: lastElementRect,
|
|
67
|
+
mutationData: mutationData
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
this.mutationObserver = (0, _mutationObserver.default)({
|
|
72
|
+
onChildListMutation: function onChildListMutation(_ref3) {
|
|
73
|
+
var _removedNodes$map;
|
|
74
|
+
var addedNodes = _ref3.addedNodes,
|
|
75
|
+
removedNodes = _ref3.removedNodes;
|
|
76
|
+
var removedNodeRects = (_removedNodes$map = removedNodes === null || removedNodes === void 0 ? void 0 : removedNodes.map(function (n) {
|
|
77
|
+
return _this.mapVisibleNodeRects.get(n);
|
|
78
|
+
})) !== null && _removedNodes$map !== void 0 ? _removedNodes$map : [];
|
|
79
|
+
addedNodes.forEach(function (addedNode) {
|
|
80
|
+
var _this$intersectionObs3;
|
|
81
|
+
// for (const elem of addedNode.querySelectorAll('*')) {
|
|
82
|
+
// this.intersectionObserver?.watchAndTag(elem, 'mutation:child-element');
|
|
83
|
+
// }
|
|
84
|
+
|
|
85
|
+
var sameDeletedNode = removedNodes.find(function (n) {
|
|
86
|
+
return n.isEqualNode(addedNode);
|
|
87
|
+
});
|
|
88
|
+
if (sameDeletedNode) {
|
|
89
|
+
var _this$intersectionObs;
|
|
90
|
+
(_this$intersectionObs = _this.intersectionObserver) === null || _this$intersectionObs === void 0 || _this$intersectionObs.watchAndTag(addedNode, 'mutation:remount');
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
if ((0, _vcUtils.isContainedWithinMediaWrapper)(addedNode)) {
|
|
94
|
+
var _this$intersectionObs2;
|
|
95
|
+
(_this$intersectionObs2 = _this.intersectionObserver) === null || _this$intersectionObs2 === void 0 || _this$intersectionObs2.watchAndTag(addedNode, 'mutation:media');
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
(_this$intersectionObs3 = _this.intersectionObserver) === null || _this$intersectionObs3 === void 0 || _this$intersectionObs3.watchAndTag(addedNode, function (_ref4) {
|
|
99
|
+
var rect = _ref4.rect;
|
|
100
|
+
var wasDeleted = removedNodeRects.some(function (nr) {
|
|
101
|
+
return sameRectDimensions(nr, rect);
|
|
102
|
+
});
|
|
103
|
+
if (wasDeleted) {
|
|
104
|
+
return 'mutation:element-replacement';
|
|
105
|
+
}
|
|
106
|
+
return 'mutation:element';
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
},
|
|
110
|
+
onAttributeMutation: function onAttributeMutation(_ref5) {
|
|
111
|
+
var _this$intersectionObs4;
|
|
112
|
+
var target = _ref5.target,
|
|
113
|
+
attributeName = _ref5.attributeName;
|
|
114
|
+
(_this$intersectionObs4 = _this.intersectionObserver) === null || _this$intersectionObs4 === void 0 || _this$intersectionObs4.watchAndTag(target, function (_ref6) {
|
|
115
|
+
var target = _ref6.target,
|
|
116
|
+
rect = _ref6.rect;
|
|
117
|
+
if ((0, _vcUtils.isContainedWithinMediaWrapper)(target)) {
|
|
118
|
+
return {
|
|
119
|
+
type: 'mutation:media',
|
|
120
|
+
mutationData: {
|
|
121
|
+
attributeName: attributeName
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
var lastElementRect = _this.mapVisibleNodeRects.get(target);
|
|
126
|
+
if (lastElementRect && sameRectSize(rect, lastElementRect)) {
|
|
127
|
+
return {
|
|
128
|
+
type: 'mutation:attribute:no-layout-shift',
|
|
129
|
+
mutationData: {
|
|
130
|
+
attributeName: attributeName
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
return {
|
|
135
|
+
type: 'mutation:attribute',
|
|
136
|
+
mutationData: {
|
|
137
|
+
attributeName: attributeName
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
this.performanceObserver = (0, _performanceObserver.default)({
|
|
144
|
+
onLayoutShift: function onLayoutShift(_ref7) {
|
|
145
|
+
var time = _ref7.time,
|
|
146
|
+
changedRects = _ref7.changedRects;
|
|
147
|
+
var _iterator = _createForOfIteratorHelper(changedRects),
|
|
148
|
+
_step;
|
|
149
|
+
try {
|
|
150
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
151
|
+
var changedRect = _step.value;
|
|
152
|
+
onChange({
|
|
153
|
+
time: time,
|
|
154
|
+
elementRef: new WeakRef(changedRect.node),
|
|
155
|
+
visible: true,
|
|
156
|
+
rect: changedRect.rect,
|
|
157
|
+
previousRect: changedRect.previousRect,
|
|
158
|
+
type: 'layout-shift'
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
} catch (err) {
|
|
162
|
+
_iterator.e(err);
|
|
163
|
+
} finally {
|
|
164
|
+
_iterator.f();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
return (0, _createClass2.default)(ViewportObserver, [{
|
|
170
|
+
key: "start",
|
|
171
|
+
value: function start() {
|
|
172
|
+
var _this$mutationObserve, _this$performanceObse;
|
|
173
|
+
(_this$mutationObserve = this.mutationObserver) === null || _this$mutationObserve === void 0 || _this$mutationObserve.observe(document.body, {
|
|
174
|
+
attributeOldValue: true,
|
|
175
|
+
attributes: true,
|
|
176
|
+
childList: true,
|
|
177
|
+
subtree: true
|
|
178
|
+
});
|
|
179
|
+
(_this$performanceObse = this.performanceObserver) === null || _this$performanceObse === void 0 || _this$performanceObse.observe({
|
|
180
|
+
type: 'layout-shift',
|
|
181
|
+
buffered: true,
|
|
182
|
+
// @ts-ignore-error
|
|
183
|
+
durationThreshold: 30
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
}, {
|
|
187
|
+
key: "stop",
|
|
188
|
+
value: function stop() {
|
|
189
|
+
var _this$mutationObserve2, _this$intersectionObs5, _this$performanceObse2;
|
|
190
|
+
(_this$mutationObserve2 = this.mutationObserver) === null || _this$mutationObserve2 === void 0 || _this$mutationObserve2.disconnect();
|
|
191
|
+
(_this$intersectionObs5 = this.intersectionObserver) === null || _this$intersectionObs5 === void 0 || _this$intersectionObs5.disconnect();
|
|
192
|
+
(_this$performanceObse2 = this.performanceObserver) === null || _this$performanceObse2 === void 0 || _this$performanceObse2.disconnect();
|
|
193
|
+
}
|
|
194
|
+
}]);
|
|
195
|
+
}();
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createIntersectionObserver = createIntersectionObserver;
|
|
7
|
+
function isValidEntry(entry) {
|
|
8
|
+
return entry.isIntersecting && entry.intersectionRect.width > 0 && entry.intersectionRect.height > 0;
|
|
9
|
+
}
|
|
10
|
+
function createIntersectionObserver(args) {
|
|
11
|
+
if (!window || typeof window.IntersectionObserver !== 'function') {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
var callbacksPerElement = new WeakMap();
|
|
15
|
+
var observer = new IntersectionObserver(function (entries) {
|
|
16
|
+
var _args$onObserved;
|
|
17
|
+
var validEntries = [];
|
|
18
|
+
var startTime = performance.now();
|
|
19
|
+
entries.forEach(function (entry) {
|
|
20
|
+
var _mutationTag;
|
|
21
|
+
if (!(entry.target instanceof HTMLElement) || !isValidEntry(entry)) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
var mutationTag = null;
|
|
25
|
+
var mutationData = null;
|
|
26
|
+
var tagOrCallback = callbacksPerElement.get(entry.target);
|
|
27
|
+
if (typeof tagOrCallback === 'function') {
|
|
28
|
+
var tagOrCallbackResult = tagOrCallback({
|
|
29
|
+
target: entry.target,
|
|
30
|
+
rect: entry.intersectionRect
|
|
31
|
+
});
|
|
32
|
+
if (!tagOrCallbackResult) {
|
|
33
|
+
mutationTag = 'unknown';
|
|
34
|
+
} else if (typeof tagOrCallbackResult === 'string') {
|
|
35
|
+
mutationTag = tagOrCallbackResult;
|
|
36
|
+
} else {
|
|
37
|
+
mutationTag = tagOrCallbackResult.type;
|
|
38
|
+
mutationData = tagOrCallbackResult.mutationData;
|
|
39
|
+
}
|
|
40
|
+
} else if (typeof tagOrCallback === 'string') {
|
|
41
|
+
mutationTag = tagOrCallback;
|
|
42
|
+
}
|
|
43
|
+
args.onEntry({
|
|
44
|
+
target: entry.target,
|
|
45
|
+
rect: entry.intersectionRect,
|
|
46
|
+
time: entry.time,
|
|
47
|
+
type: (_mutationTag = mutationTag) !== null && _mutationTag !== void 0 ? _mutationTag : 'unknown',
|
|
48
|
+
mutationData: mutationData
|
|
49
|
+
});
|
|
50
|
+
validEntries.push(new WeakRef(entry.target));
|
|
51
|
+
callbacksPerElement.delete(entry.target);
|
|
52
|
+
observer.unobserve(entry.target);
|
|
53
|
+
});
|
|
54
|
+
(_args$onObserved = args.onObserved) === null || _args$onObserved === void 0 || _args$onObserved.call(args, {
|
|
55
|
+
time: startTime,
|
|
56
|
+
elements: validEntries
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
return {
|
|
60
|
+
disconnect: function disconnect() {
|
|
61
|
+
observer.disconnect();
|
|
62
|
+
},
|
|
63
|
+
unobserve: function unobserve(target) {
|
|
64
|
+
observer.unobserve(target);
|
|
65
|
+
},
|
|
66
|
+
watchAndTag: function watchAndTag(target, tagOrCallback) {
|
|
67
|
+
callbacksPerElement.set(target, tagOrCallback);
|
|
68
|
+
observer.observe(target);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = createMutationObserver;
|
|
7
|
+
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; } } }; }
|
|
8
|
+
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; } }
|
|
9
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
10
|
+
function createMutationObserver(_ref) {
|
|
11
|
+
var onAttributeMutation = _ref.onAttributeMutation,
|
|
12
|
+
onChildListMutation = _ref.onChildListMutation,
|
|
13
|
+
onMutationFinished = _ref.onMutationFinished;
|
|
14
|
+
if (!window || typeof window.IntersectionObserver !== 'function') {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
var observer = new MutationObserver(function (mutations) {
|
|
18
|
+
var addedNodes = [];
|
|
19
|
+
var removedNodes = [];
|
|
20
|
+
var targets = [];
|
|
21
|
+
var _iterator = _createForOfIteratorHelper(mutations),
|
|
22
|
+
_step;
|
|
23
|
+
try {
|
|
24
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
25
|
+
var mut = _step.value;
|
|
26
|
+
if (!(mut.target instanceof HTMLElement)) {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
if (mut.type === 'attributes') {
|
|
30
|
+
var _mut$attributeName;
|
|
31
|
+
onAttributeMutation({
|
|
32
|
+
target: mut.target,
|
|
33
|
+
attributeName: (_mut$attributeName = mut.attributeName) !== null && _mut$attributeName !== void 0 ? _mut$attributeName : 'unknown'
|
|
34
|
+
});
|
|
35
|
+
continue;
|
|
36
|
+
} else if (mut.type === 'childList') {
|
|
37
|
+
var _mut$addedNodes, _mut$removedNodes;
|
|
38
|
+
((_mut$addedNodes = mut.addedNodes) !== null && _mut$addedNodes !== void 0 ? _mut$addedNodes : []).forEach(function (node) {
|
|
39
|
+
if (node instanceof HTMLElement) {
|
|
40
|
+
addedNodes.push(node);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
((_mut$removedNodes = mut.removedNodes) !== null && _mut$removedNodes !== void 0 ? _mut$removedNodes : []).forEach(function (node) {
|
|
44
|
+
if (node instanceof HTMLElement) {
|
|
45
|
+
removedNodes.push(node);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
targets.push(mut.target);
|
|
50
|
+
}
|
|
51
|
+
} catch (err) {
|
|
52
|
+
_iterator.e(err);
|
|
53
|
+
} finally {
|
|
54
|
+
_iterator.f();
|
|
55
|
+
}
|
|
56
|
+
onChildListMutation({
|
|
57
|
+
addedNodes: addedNodes,
|
|
58
|
+
removedNodes: removedNodes
|
|
59
|
+
});
|
|
60
|
+
onMutationFinished === null || onMutationFinished === void 0 || onMutationFinished({
|
|
61
|
+
targets: targets
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
return observer;
|
|
65
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.convertPhysicalToLogicalResolution = convertPhysicalToLogicalResolution;
|
|
7
|
+
exports.default = createPerformanceObserver;
|
|
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; } } }; }
|
|
9
|
+
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; } }
|
|
10
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
11
|
+
// The LayoutShiftAttribution API is returning the numbers on physical dimension
|
|
12
|
+
function convertPhysicalToLogicalResolution(rect) {
|
|
13
|
+
if (typeof window.devicePixelRatio !== 'number') {
|
|
14
|
+
return rect;
|
|
15
|
+
}
|
|
16
|
+
if (window.devicePixelRatio === 1) {
|
|
17
|
+
return rect;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// eslint-disable-next-line compat/compat
|
|
21
|
+
return new DOMRect(rect.x / window.devicePixelRatio, rect.y / window.devicePixelRatio, rect.width / window.devicePixelRatio, rect.height / window.devicePixelRatio);
|
|
22
|
+
}
|
|
23
|
+
function createPerformanceObserver(args) {
|
|
24
|
+
if (!window || typeof window.PerformanceObserver !== 'function') {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
var onLayoutShift = args.onLayoutShift;
|
|
28
|
+
var observer = new PerformanceObserver(function (entries) {
|
|
29
|
+
var _iterator = _createForOfIteratorHelper(entries.getEntries()),
|
|
30
|
+
_step;
|
|
31
|
+
try {
|
|
32
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
33
|
+
var entry = _step.value;
|
|
34
|
+
if (entry.entryType === 'layout-shift') {
|
|
35
|
+
// Ignored via go/ees005
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
37
|
+
var changedRects = entry.sources.reduceRight(function (acc, attr) {
|
|
38
|
+
acc.push({
|
|
39
|
+
rect: convertPhysicalToLogicalResolution(attr.currentRect),
|
|
40
|
+
previousRect: convertPhysicalToLogicalResolution(attr.previousRect),
|
|
41
|
+
node: attr.node
|
|
42
|
+
});
|
|
43
|
+
return acc;
|
|
44
|
+
}, []);
|
|
45
|
+
onLayoutShift({
|
|
46
|
+
time: entry.startTime,
|
|
47
|
+
changedRects: changedRects
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
} catch (err) {
|
|
52
|
+
_iterator.e(err);
|
|
53
|
+
} finally {
|
|
54
|
+
_iterator.f();
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
return observer;
|
|
58
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = 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 _bindEventListener = require("bind-event-listener");
|
|
12
|
+
var WindowEventObserver = exports.default = /*#__PURE__*/function () {
|
|
13
|
+
function WindowEventObserver(opts) {
|
|
14
|
+
(0, _classCallCheck2.default)(this, WindowEventObserver);
|
|
15
|
+
(0, _defineProperty2.default)(this, "unbindFns", []);
|
|
16
|
+
this.onEvent = opts.onEvent;
|
|
17
|
+
}
|
|
18
|
+
return (0, _createClass2.default)(WindowEventObserver, [{
|
|
19
|
+
key: "bindEvent",
|
|
20
|
+
value: function bindEvent(type) {
|
|
21
|
+
var _this = this;
|
|
22
|
+
var unbindCallback = (0, _bindEventListener.bind)(window, {
|
|
23
|
+
type: type,
|
|
24
|
+
listener: function listener(event) {
|
|
25
|
+
_this.onEvent({
|
|
26
|
+
time: event.timeStamp,
|
|
27
|
+
type: type,
|
|
28
|
+
event: event
|
|
29
|
+
});
|
|
30
|
+
},
|
|
31
|
+
options: {
|
|
32
|
+
passive: true
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
this.unbindFns.push(unbindCallback);
|
|
36
|
+
}
|
|
37
|
+
}, {
|
|
38
|
+
key: "start",
|
|
39
|
+
value: function start() {
|
|
40
|
+
this.bindEvent('wheel');
|
|
41
|
+
this.bindEvent('scroll');
|
|
42
|
+
this.bindEvent('keydown');
|
|
43
|
+
this.bindEvent('resize');
|
|
44
|
+
}
|
|
45
|
+
}, {
|
|
46
|
+
key: "stop",
|
|
47
|
+
value: function stop() {
|
|
48
|
+
this.unbindFns.forEach(function (cb) {
|
|
49
|
+
cb();
|
|
50
|
+
});
|
|
51
|
+
this.unbindFns = [];
|
|
52
|
+
}
|
|
53
|
+
}]);
|
|
54
|
+
}();
|