@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,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,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -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,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -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
+ }();