@atlaskit/react-ufo 3.1.3 → 3.2.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 +10 -7
- package/dist/cjs/resource-timing/main.js +3 -3
- 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 +10 -7
- package/dist/es2019/resource-timing/main.js +3 -3
- 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 +10 -7
- package/dist/esm/resource-timing/main.js +3 -3
- 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 +10 -1
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
1
2
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
3
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
4
|
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
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; } } }; }
|
|
@@ -536,29 +538,65 @@ export function tryComplete(interactionId, endTime) {
|
|
|
536
538
|
if (interaction != null) {
|
|
537
539
|
var noMoreActiveHolds = interaction.holdActive.size === 0;
|
|
538
540
|
var noMoreExpHolds = interaction.holdExpActive.size === 0;
|
|
539
|
-
var postInteraction = function
|
|
540
|
-
var
|
|
541
|
-
|
|
542
|
-
var _getConfig7;
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
541
|
+
var postInteraction = /*#__PURE__*/function () {
|
|
542
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
543
|
+
var _getConfig6, _getConfig8;
|
|
544
|
+
var _getConfig7, experimentalVC90, experimentalTTAI, _yield$getExperimenta, start, end;
|
|
545
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
546
|
+
while (1) switch (_context.prev = _context.next) {
|
|
547
|
+
case 0:
|
|
548
|
+
if (!((_getConfig6 = getConfig()) !== null && _getConfig6 !== void 0 && (_getConfig6 = _getConfig6.postInteractionLog) !== null && _getConfig6 !== void 0 && _getConfig6.enabled)) {
|
|
549
|
+
_context.next = 17;
|
|
550
|
+
break;
|
|
551
|
+
}
|
|
552
|
+
if (!((_getConfig7 = getConfig()) !== null && _getConfig7 !== void 0 && (_getConfig7 = _getConfig7.experimentalInteractionMetrics) !== null && _getConfig7 !== void 0 && _getConfig7.enabled)) {
|
|
553
|
+
_context.next = 16;
|
|
554
|
+
break;
|
|
555
|
+
}
|
|
556
|
+
_context.next = 4;
|
|
557
|
+
return getExperimentalVCMetrics(interaction);
|
|
558
|
+
case 4:
|
|
559
|
+
_context.t1 = _yield$getExperimenta = _context.sent;
|
|
560
|
+
_context.t0 = _context.t1 === null;
|
|
561
|
+
if (_context.t0) {
|
|
562
|
+
_context.next = 8;
|
|
563
|
+
break;
|
|
564
|
+
}
|
|
565
|
+
_context.t0 = _yield$getExperimenta === void 0;
|
|
566
|
+
case 8:
|
|
567
|
+
if (!_context.t0) {
|
|
568
|
+
_context.next = 12;
|
|
569
|
+
break;
|
|
570
|
+
}
|
|
571
|
+
_context.t2 = void 0;
|
|
572
|
+
_context.next = 13;
|
|
573
|
+
break;
|
|
574
|
+
case 12:
|
|
575
|
+
_context.t2 = _yield$getExperimenta['metric:experimental:vc90'];
|
|
576
|
+
case 13:
|
|
577
|
+
experimentalVC90 = _context.t2;
|
|
578
|
+
start = interaction.start, end = interaction.end;
|
|
579
|
+
experimentalTTAI = !interaction.abortReason ? Math.round(end - start) : undefined;
|
|
580
|
+
case 16:
|
|
581
|
+
postInteractionLog.onInteractionComplete(_objectSpread(_objectSpread({}, interaction), {}, {
|
|
582
|
+
experimentalTTAI: experimentalTTAI,
|
|
583
|
+
experimentalVC90: experimentalVC90
|
|
584
|
+
}));
|
|
585
|
+
case 17:
|
|
586
|
+
if ((_getConfig8 = getConfig()) !== null && _getConfig8 !== void 0 && (_getConfig8 = _getConfig8.experimentalInteractionMetrics) !== null && _getConfig8 !== void 0 && _getConfig8.enabled) {
|
|
587
|
+
remove(interactionId);
|
|
588
|
+
}
|
|
589
|
+
activeSubmitted = false;
|
|
590
|
+
case 19:
|
|
591
|
+
case "end":
|
|
592
|
+
return _context.stop();
|
|
593
|
+
}
|
|
594
|
+
}, _callee);
|
|
595
|
+
}));
|
|
596
|
+
return function postInteraction() {
|
|
597
|
+
return _ref.apply(this, arguments);
|
|
598
|
+
};
|
|
599
|
+
}();
|
|
562
600
|
if (noMoreActiveHolds) {
|
|
563
601
|
if (!activeSubmitted) {
|
|
564
602
|
finishInteraction(interactionId, interaction, endTime);
|
|
@@ -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
|
import { getConfig } from '../config';
|
|
@@ -105,43 +107,61 @@ var PostInteractionLog = /*#__PURE__*/function () {
|
|
|
105
107
|
*/
|
|
106
108
|
}, {
|
|
107
109
|
key: "sendPostInteractionLog",
|
|
108
|
-
value: function
|
|
109
|
-
var
|
|
110
|
-
|
|
111
|
-
var _getConfig;
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
110
|
+
value: (function () {
|
|
111
|
+
var _sendPostInteractionLog = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
112
|
+
var _this$vcObserver3, _getConfig2;
|
|
113
|
+
var _getConfig, _this$vcObserver2, postInteractionFinishVCResult, _this$vcObserver4;
|
|
114
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
115
|
+
while (1) switch (_context.prev = _context.next) {
|
|
116
|
+
case 0:
|
|
117
|
+
if (!(!this.hasData() || !this.lastInteractionFinish || !this.sinkHandlerFn)) {
|
|
118
|
+
_context.next = 4;
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
121
|
+
this.reset();
|
|
122
|
+
if ((_getConfig = getConfig()) !== null && _getConfig !== void 0 && (_getConfig = _getConfig.experimentalInteractionMetrics) !== null && _getConfig !== void 0 && _getConfig.enabled) {
|
|
123
|
+
(_this$vcObserver2 = this.vcObserver) === null || _this$vcObserver2 === void 0 || _this$vcObserver2.stop();
|
|
124
|
+
}
|
|
125
|
+
return _context.abrupt("return");
|
|
126
|
+
case 4:
|
|
127
|
+
_context.next = 6;
|
|
128
|
+
return (_this$vcObserver3 = this.vcObserver) === null || _this$vcObserver3 === void 0 ? void 0 : _this$vcObserver3.getVCResult(_objectSpread({
|
|
129
|
+
start: this.lastInteractionFinish.start,
|
|
130
|
+
stop: performance.now(),
|
|
131
|
+
tti: -1,
|
|
132
|
+
// no need for TTI value here
|
|
133
|
+
prefix: 'ufo'
|
|
134
|
+
}, this.vcObserverSSRConfig));
|
|
135
|
+
case 6:
|
|
136
|
+
postInteractionFinishVCResult = _context.sent;
|
|
137
|
+
if ((_getConfig2 = getConfig()) !== null && _getConfig2 !== void 0 && (_getConfig2 = _getConfig2.experimentalInteractionMetrics) !== null && _getConfig2 !== void 0 && _getConfig2.enabled) {
|
|
138
|
+
(_this$vcObserver4 = this.vcObserver) === null || _this$vcObserver4 === void 0 || _this$vcObserver4.stop();
|
|
139
|
+
}
|
|
140
|
+
this.sinkHandlerFn({
|
|
141
|
+
lastInteractionFinish: this.lastInteractionFinish,
|
|
142
|
+
reactProfilerTimings: this.reactProfilerTimings,
|
|
143
|
+
// NOTE: invoking `getVCResult` at latest possible point in time here (not earlier) to get the most accurate result (from performance.now())
|
|
144
|
+
postInteractionFinishVCResult: postInteractionFinishVCResult,
|
|
145
|
+
lastInteractionFinishVCResult: this.lastInteractionFinishVCResult
|
|
146
|
+
});
|
|
147
|
+
this.reset();
|
|
148
|
+
case 10:
|
|
149
|
+
case "end":
|
|
150
|
+
return _context.stop();
|
|
151
|
+
}
|
|
152
|
+
}, _callee, this);
|
|
153
|
+
}));
|
|
154
|
+
function sendPostInteractionLog() {
|
|
155
|
+
return _sendPostInteractionLog.apply(this, arguments);
|
|
118
156
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
stop: performance.now(),
|
|
122
|
-
tti: -1,
|
|
123
|
-
// no need for TTI value here
|
|
124
|
-
prefix: 'ufo'
|
|
125
|
-
}, this.vcObserverSSRConfig));
|
|
126
|
-
if ((_getConfig2 = getConfig()) !== null && _getConfig2 !== void 0 && (_getConfig2 = _getConfig2.experimentalInteractionMetrics) !== null && _getConfig2 !== void 0 && _getConfig2.enabled) {
|
|
127
|
-
var _this$vcObserver4;
|
|
128
|
-
(_this$vcObserver4 = this.vcObserver) === null || _this$vcObserver4 === void 0 || _this$vcObserver4.stop();
|
|
129
|
-
}
|
|
130
|
-
this.sinkHandlerFn({
|
|
131
|
-
lastInteractionFinish: this.lastInteractionFinish,
|
|
132
|
-
reactProfilerTimings: this.reactProfilerTimings,
|
|
133
|
-
// NOTE: invoking `getVCResult` at latest possible point in time here (not earlier) to get the most accurate result (from performance.now())
|
|
134
|
-
postInteractionFinishVCResult: postInteractionFinishVCResult,
|
|
135
|
-
lastInteractionFinishVCResult: this.lastInteractionFinishVCResult
|
|
136
|
-
});
|
|
137
|
-
this.reset();
|
|
138
|
-
}
|
|
139
|
-
|
|
157
|
+
return sendPostInteractionLog;
|
|
158
|
+
}()
|
|
140
159
|
/**
|
|
141
160
|
* This fn should be invoked when an interaction has finished
|
|
142
161
|
* Basic details about the finished interaction will be recorded
|
|
143
162
|
* A timeout will be setup to send the post interaction observation after some time.
|
|
144
163
|
*/
|
|
164
|
+
)
|
|
145
165
|
}, {
|
|
146
166
|
key: "onInteractionComplete",
|
|
147
167
|
value: function onInteractionComplete(_ref2) {
|
|
@@ -170,9 +190,18 @@ var PostInteractionLog = /*#__PURE__*/function () {
|
|
|
170
190
|
experimentalVC90: experimentalVC90
|
|
171
191
|
};
|
|
172
192
|
var timeout = ((_getConfig3 = getConfig()) === null || _getConfig3 === void 0 ? void 0 : _getConfig3.timeWindowForLateMutationsInMilliseconds) || POST_INTERACTION_LOG_SEND_DEFAULT_TIMEOUT;
|
|
173
|
-
this.sinkTimeoutId = window.setTimeout(function () {
|
|
174
|
-
|
|
175
|
-
|
|
193
|
+
this.sinkTimeoutId = window.setTimeout( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
194
|
+
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
195
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
196
|
+
case 0:
|
|
197
|
+
_context2.next = 2;
|
|
198
|
+
return _this.sendPostInteractionLog();
|
|
199
|
+
case 2:
|
|
200
|
+
case "end":
|
|
201
|
+
return _context2.stop();
|
|
202
|
+
}
|
|
203
|
+
}, _callee2);
|
|
204
|
+
})), timeout);
|
|
176
205
|
}
|
|
177
206
|
|
|
178
207
|
/**
|
|
@@ -10,13 +10,16 @@ var initialized = false;
|
|
|
10
10
|
function sinkInteraction(instance, payloadPackage) {
|
|
11
11
|
sinkInteractionHandler(function (interactionId, interaction) {
|
|
12
12
|
scheduleCallback(idlePriority, function () {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
payloadPackage.createPayloads(interactionId, interaction).then(function (payloads) {
|
|
14
|
+
var devToolObserver = globalThis.__ufo_devtool_onUfoPayload;
|
|
15
|
+
payloads === null || payloads === void 0 || payloads.forEach(function (payload) {
|
|
16
|
+
if (typeof devToolObserver === 'function') {
|
|
17
|
+
devToolObserver === null || devToolObserver === void 0 || devToolObserver(payload);
|
|
18
|
+
}
|
|
19
|
+
instance.sendOperationalEvent(payload);
|
|
20
|
+
});
|
|
21
|
+
}).catch(function (error) {
|
|
22
|
+
throw error;
|
|
20
23
|
});
|
|
21
24
|
});
|
|
22
25
|
});
|
|
@@ -6,13 +6,13 @@ import { getConfig as getConfigUFO } from '../config';
|
|
|
6
6
|
import { roundEpsilon } from '../round-number';
|
|
7
7
|
import { getConfig } from './common/utils/config';
|
|
8
8
|
import { filterResourceTimings } from './common/utils/resource-timing-buffer';
|
|
9
|
-
var
|
|
9
|
+
var alwaysCacheableTypes = ['script', 'link'];
|
|
10
10
|
var resourceTypes = ['fetch', 'xmlhttprequest'];
|
|
11
11
|
var CACHE_NETWORK = 'network';
|
|
12
12
|
var CACHE_MEMORY = 'memory';
|
|
13
13
|
var CACHE_DISK = 'disk';
|
|
14
14
|
var isCacheableType = function isCacheableType(url, type) {
|
|
15
|
-
if (
|
|
15
|
+
if (alwaysCacheableTypes.includes(type)) {
|
|
16
16
|
return true;
|
|
17
17
|
}
|
|
18
18
|
if (type === 'other' && url.includes('.js') && fg('ufo_support_other_resource_type_js')) {
|
|
@@ -86,7 +86,7 @@ var getNetworkData = function getNetworkData(item, eventStart) {
|
|
|
86
86
|
if (!hasAccessToResourceSize(name, initiatorType, item, hasTimingHeaders)) {
|
|
87
87
|
return {};
|
|
88
88
|
}
|
|
89
|
-
if (
|
|
89
|
+
if (isCacheableType(name, initiatorType)) {
|
|
90
90
|
var transferType = calculateTransferType(name, initiatorType, duration, transferSize);
|
|
91
91
|
return _objectSpread({
|
|
92
92
|
ttfb: ttfb,
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export default function scheduleOnPaint(callback) {
|
|
2
|
+
var _document;
|
|
3
|
+
if (((_document = document) === null || _document === void 0 ? void 0 : _document.visibilityState) !== 'visible') {
|
|
4
|
+
// last resort fallback
|
|
5
|
+
setTimeout(callback, 100);
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
// Check if the Scheduler API is available
|
|
10
|
+
if (typeof window.scheduler !== 'undefined' && typeof window.scheduler.postTask === 'function') {
|
|
11
|
+
// Use scheduler.postTask if available
|
|
12
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/Prioritized_Task_Scheduling_API
|
|
13
|
+
// Make sure we are scheduling this task before the browser paint the next frame
|
|
14
|
+
requestAnimationFrame(function () {
|
|
15
|
+
window.scheduler.postTask(callback, {
|
|
16
|
+
priority: 'user-visible'
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
// if active tab, and can do requestAnimationFrame
|
|
21
|
+
else if (typeof requestAnimationFrame !== 'undefined') {
|
|
22
|
+
// Fallback to using double requestAnimationFrame
|
|
23
|
+
requestAnimationFrame(function () {
|
|
24
|
+
requestAnimationFrame(function () {
|
|
25
|
+
callback();
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -14,6 +14,7 @@ import UFOInteractionIDContext from '../interaction-id-context';
|
|
|
14
14
|
import { abortByNewInteraction, addApdex as _addApdex, addCustomData as _addCustomData, addCustomTiming, addHold, addHoldByID, addMark as _addMark, addNewInteraction, addProfilerTimings, addRequestInfo, addSegment, addSpan, removeHoldByID, removeSegment, tryComplete } from '../interaction-metrics';
|
|
15
15
|
import UFORouteName from '../route-name-context';
|
|
16
16
|
import generateId from '../short-id';
|
|
17
|
+
import scheduleOnPaint from './schedule-on-paint';
|
|
17
18
|
var tryCompleteHandle;
|
|
18
19
|
var AsyncSegmentHighlight = /*#__PURE__*/lazy(function () {
|
|
19
20
|
return import( /* webpackChunkName: "@atlaskit-internal_ufo-segment-highlight" */'./segment-highlight').then(function (module) {
|
|
@@ -202,9 +203,17 @@ export default function UFOSegment(_ref) {
|
|
|
202
203
|
}
|
|
203
204
|
},
|
|
204
205
|
onRender: function onRender(phase, actualDuration, baseDuration, startTime, commitTime) {
|
|
206
|
+
var _this = this;
|
|
205
207
|
if (interactionId.current !== null) {
|
|
206
208
|
addProfilerTimings(interactionId.current, this.labelStack, phase, actualDuration, baseDuration, startTime, commitTime);
|
|
207
|
-
|
|
209
|
+
if (fg('platform_ufo_vc_ttai_on_paint')) {
|
|
210
|
+
scheduleOnPaint(function () {
|
|
211
|
+
var paintedTime = performance.now();
|
|
212
|
+
_this.complete(paintedTime);
|
|
213
|
+
});
|
|
214
|
+
} else {
|
|
215
|
+
this.complete(commitTime);
|
|
216
|
+
}
|
|
208
217
|
}
|
|
209
218
|
},
|
|
210
219
|
_internalHold: _internalHold,
|
package/dist/esm/vc/index.js
CHANGED
|
@@ -1,8 +1,111 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
4
|
+
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
5
|
+
import _createClass from "@babel/runtime/helpers/createClass";
|
|
6
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
7
|
+
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; }
|
|
8
|
+
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; }
|
|
9
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
1
10
|
import { VCObserver } from './vc-observer';
|
|
11
|
+
import VCObserverNew from './vc-observer-new';
|
|
12
|
+
var VCObserverWrapper = /*#__PURE__*/function () {
|
|
13
|
+
function VCObserverWrapper() {
|
|
14
|
+
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
15
|
+
_classCallCheck(this, VCObserverWrapper);
|
|
16
|
+
this.oldVCObserver = new VCObserver(opts);
|
|
17
|
+
this.newVCObserver = null;
|
|
18
|
+
var isNewVCObserverEnabled = fg('platform_ufo_vc_observer_new');
|
|
19
|
+
if (isNewVCObserverEnabled) {
|
|
20
|
+
this.newVCObserver = new VCObserverNew({
|
|
21
|
+
selectorConfig: opts.selectorConfig
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return _createClass(VCObserverWrapper, [{
|
|
26
|
+
key: "start",
|
|
27
|
+
value: function start(startArg) {
|
|
28
|
+
var _this$oldVCObserver, _this$newVCObserver;
|
|
29
|
+
(_this$oldVCObserver = this.oldVCObserver) === null || _this$oldVCObserver === void 0 || _this$oldVCObserver.start(startArg);
|
|
30
|
+
(_this$newVCObserver = this.newVCObserver) === null || _this$newVCObserver === void 0 || _this$newVCObserver.start();
|
|
31
|
+
}
|
|
32
|
+
}, {
|
|
33
|
+
key: "stop",
|
|
34
|
+
value: function stop() {
|
|
35
|
+
var _this$oldVCObserver2, _this$newVCObserver2;
|
|
36
|
+
(_this$oldVCObserver2 = this.oldVCObserver) === null || _this$oldVCObserver2 === void 0 || _this$oldVCObserver2.stop();
|
|
37
|
+
(_this$newVCObserver2 = this.newVCObserver) === null || _this$newVCObserver2 === void 0 || _this$newVCObserver2.stop();
|
|
38
|
+
}
|
|
39
|
+
}, {
|
|
40
|
+
key: "getVCRawData",
|
|
41
|
+
value: function getVCRawData() {
|
|
42
|
+
var _this$oldVCObserver$g, _this$oldVCObserver3;
|
|
43
|
+
return (_this$oldVCObserver$g = (_this$oldVCObserver3 = this.oldVCObserver) === null || _this$oldVCObserver3 === void 0 ? void 0 : _this$oldVCObserver3.getVCRawData()) !== null && _this$oldVCObserver$g !== void 0 ? _this$oldVCObserver$g : null;
|
|
44
|
+
}
|
|
45
|
+
}, {
|
|
46
|
+
key: "getVCResult",
|
|
47
|
+
value: function () {
|
|
48
|
+
var _getVCResult = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(param) {
|
|
49
|
+
var _this$oldVCObserver4, _this$newVCObserver3, _ref;
|
|
50
|
+
var oldResult, newResult;
|
|
51
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
52
|
+
while (1) switch (_context.prev = _context.next) {
|
|
53
|
+
case 0:
|
|
54
|
+
_context.next = 2;
|
|
55
|
+
return (_this$oldVCObserver4 = this.oldVCObserver) === null || _this$oldVCObserver4 === void 0 ? void 0 : _this$oldVCObserver4.getVCResult(param);
|
|
56
|
+
case 2:
|
|
57
|
+
oldResult = _context.sent;
|
|
58
|
+
_context.next = 5;
|
|
59
|
+
return (_this$newVCObserver3 = this.newVCObserver) === null || _this$newVCObserver3 === void 0 ? void 0 : _this$newVCObserver3.getVCResult({
|
|
60
|
+
start: param.start,
|
|
61
|
+
stop: fg('platform_ufo_vc_ttai_on_paint') ? param.stop : performance.now()
|
|
62
|
+
});
|
|
63
|
+
case 5:
|
|
64
|
+
newResult = _context.sent;
|
|
65
|
+
if (!(oldResult && !newResult)) {
|
|
66
|
+
_context.next = 8;
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
return _context.abrupt("return", oldResult);
|
|
70
|
+
case 8:
|
|
71
|
+
return _context.abrupt("return", _objectSpread(_objectSpread({}, oldResult !== null && oldResult !== void 0 ? oldResult : {}), {}, {
|
|
72
|
+
'ufo:vc:rev': [].concat(_toConsumableArray((_ref = oldResult === null || oldResult === void 0 ? void 0 : oldResult['ufo:vc:rev']) !== null && _ref !== void 0 ? _ref : []), _toConsumableArray(newResult !== null && newResult !== void 0 ? newResult : []))
|
|
73
|
+
}));
|
|
74
|
+
case 9:
|
|
75
|
+
case "end":
|
|
76
|
+
return _context.stop();
|
|
77
|
+
}
|
|
78
|
+
}, _callee, this);
|
|
79
|
+
}));
|
|
80
|
+
function getVCResult(_x) {
|
|
81
|
+
return _getVCResult.apply(this, arguments);
|
|
82
|
+
}
|
|
83
|
+
return getVCResult;
|
|
84
|
+
}()
|
|
85
|
+
}, {
|
|
86
|
+
key: "setSSRElement",
|
|
87
|
+
value: function setSSRElement(element) {
|
|
88
|
+
var _this$oldVCObserver5;
|
|
89
|
+
(_this$oldVCObserver5 = this.oldVCObserver) === null || _this$oldVCObserver5 === void 0 || _this$oldVCObserver5.setSSRElement(element);
|
|
90
|
+
}
|
|
91
|
+
}, {
|
|
92
|
+
key: "setReactRootRenderStart",
|
|
93
|
+
value: function setReactRootRenderStart(startTime) {
|
|
94
|
+
var _this$oldVCObserver6;
|
|
95
|
+
(_this$oldVCObserver6 = this.oldVCObserver) === null || _this$oldVCObserver6 === void 0 || _this$oldVCObserver6.setReactRootRenderStart(startTime || performance.now());
|
|
96
|
+
}
|
|
97
|
+
}, {
|
|
98
|
+
key: "setReactRootRenderStop",
|
|
99
|
+
value: function setReactRootRenderStop(stopTime) {
|
|
100
|
+
var _this$oldVCObserver7;
|
|
101
|
+
(_this$oldVCObserver7 = this.oldVCObserver) === null || _this$oldVCObserver7 === void 0 || _this$oldVCObserver7.setReactRootRenderStop(stopTime || performance.now());
|
|
102
|
+
}
|
|
103
|
+
}]);
|
|
104
|
+
}();
|
|
2
105
|
export var getVCObserver = function getVCObserver() {
|
|
3
106
|
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
4
107
|
if (!globalThis.__vcObserver) {
|
|
5
|
-
globalThis.__vcObserver = new
|
|
108
|
+
globalThis.__vcObserver = new VCObserverWrapper(opts);
|
|
6
109
|
}
|
|
7
110
|
return globalThis.__vcObserver;
|
|
8
111
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|