@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
|
@@ -0,0 +1,132 @@
|
|
|
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 _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
var _entriesTimeline = _interopRequireDefault(require("./entries-timeline"));
|
|
14
|
+
var _getElementName2 = _interopRequireDefault(require("./get-element-name"));
|
|
15
|
+
var _fy25_ = _interopRequireDefault(require("./metric-calculator/fy25_03"));
|
|
16
|
+
var _viewportObserver = _interopRequireDefault(require("./viewport-observer"));
|
|
17
|
+
var _windowEventObserver = _interopRequireDefault(require("./window-event-observer"));
|
|
18
|
+
var DEFAULT_SELECTOR_CONFIG = {
|
|
19
|
+
id: false,
|
|
20
|
+
testId: true,
|
|
21
|
+
role: false,
|
|
22
|
+
className: false,
|
|
23
|
+
dataVC: true
|
|
24
|
+
};
|
|
25
|
+
var VCObserverNew = exports.default = /*#__PURE__*/function () {
|
|
26
|
+
function VCObserverNew(config) {
|
|
27
|
+
var _config$selectorConfi,
|
|
28
|
+
_this = this;
|
|
29
|
+
(0, _classCallCheck2.default)(this, VCObserverNew);
|
|
30
|
+
(0, _defineProperty2.default)(this, "startTime", 0);
|
|
31
|
+
(0, _defineProperty2.default)(this, "viewportObserver", null);
|
|
32
|
+
(0, _defineProperty2.default)(this, "windowEventObserver", null);
|
|
33
|
+
this.entriesTimeline = new _entriesTimeline.default();
|
|
34
|
+
this.selectorConfig = (_config$selectorConfi = config.selectorConfig) !== null && _config$selectorConfi !== void 0 ? _config$selectorConfi : DEFAULT_SELECTOR_CONFIG;
|
|
35
|
+
this.viewportObserver = new _viewportObserver.default({
|
|
36
|
+
onChange: function onChange(onChangeArg) {
|
|
37
|
+
var time = onChangeArg.time,
|
|
38
|
+
type = onChangeArg.type,
|
|
39
|
+
elementRef = onChangeArg.elementRef,
|
|
40
|
+
visible = onChangeArg.visible,
|
|
41
|
+
rect = onChangeArg.rect,
|
|
42
|
+
previousRect = onChangeArg.previousRect,
|
|
43
|
+
mutationData = onChangeArg.mutationData;
|
|
44
|
+
var elementName = 'unknown';
|
|
45
|
+
var element = elementRef.deref();
|
|
46
|
+
if (element) {
|
|
47
|
+
elementName = _this.getElementName(element);
|
|
48
|
+
}
|
|
49
|
+
_this.entriesTimeline.push({
|
|
50
|
+
time: time,
|
|
51
|
+
type: type,
|
|
52
|
+
data: {
|
|
53
|
+
elementName: elementName,
|
|
54
|
+
rect: rect,
|
|
55
|
+
previousRect: previousRect,
|
|
56
|
+
visible: visible,
|
|
57
|
+
attributeName: mutationData === null || mutationData === void 0 ? void 0 : mutationData.attributeName
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
this.windowEventObserver = new _windowEventObserver.default({
|
|
63
|
+
onEvent: function onEvent(_ref) {
|
|
64
|
+
var time = _ref.time,
|
|
65
|
+
type = _ref.type;
|
|
66
|
+
_this.entriesTimeline.push({
|
|
67
|
+
time: time,
|
|
68
|
+
type: 'window:event',
|
|
69
|
+
data: {
|
|
70
|
+
eventType: type
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
return (0, _createClass2.default)(VCObserverNew, [{
|
|
77
|
+
key: "start",
|
|
78
|
+
value: function start() {
|
|
79
|
+
var _this$viewportObserve, _this$windowEventObse;
|
|
80
|
+
(_this$viewportObserve = this.viewportObserver) === null || _this$viewportObserve === void 0 || _this$viewportObserve.start();
|
|
81
|
+
(_this$windowEventObse = this.windowEventObserver) === null || _this$windowEventObse === void 0 || _this$windowEventObse.start();
|
|
82
|
+
}
|
|
83
|
+
}, {
|
|
84
|
+
key: "stop",
|
|
85
|
+
value: function stop() {
|
|
86
|
+
var _this$viewportObserve2, _this$windowEventObse2;
|
|
87
|
+
(_this$viewportObserve2 = this.viewportObserver) === null || _this$viewportObserve2 === void 0 || _this$viewportObserve2.stop();
|
|
88
|
+
(_this$windowEventObse2 = this.windowEventObserver) === null || _this$windowEventObse2 === void 0 || _this$windowEventObse2.stop();
|
|
89
|
+
}
|
|
90
|
+
}, {
|
|
91
|
+
key: "getVCResult",
|
|
92
|
+
value: function () {
|
|
93
|
+
var _getVCResult = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(param) {
|
|
94
|
+
var start, stop, results, calculator_fy25_03, orderedEntries, fy25_03;
|
|
95
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
96
|
+
while (1) switch (_context.prev = _context.next) {
|
|
97
|
+
case 0:
|
|
98
|
+
start = param.start, stop = param.stop;
|
|
99
|
+
results = [];
|
|
100
|
+
calculator_fy25_03 = new _fy25_.default();
|
|
101
|
+
orderedEntries = this.entriesTimeline.getOrderedEntries({
|
|
102
|
+
start: start,
|
|
103
|
+
stop: stop
|
|
104
|
+
});
|
|
105
|
+
_context.next = 6;
|
|
106
|
+
return calculator_fy25_03.calculate({
|
|
107
|
+
orderedEntries: orderedEntries
|
|
108
|
+
});
|
|
109
|
+
case 6:
|
|
110
|
+
fy25_03 = _context.sent;
|
|
111
|
+
if (fy25_03) {
|
|
112
|
+
results.push(fy25_03);
|
|
113
|
+
}
|
|
114
|
+
return _context.abrupt("return", results);
|
|
115
|
+
case 9:
|
|
116
|
+
case "end":
|
|
117
|
+
return _context.stop();
|
|
118
|
+
}
|
|
119
|
+
}, _callee, this);
|
|
120
|
+
}));
|
|
121
|
+
function getVCResult(_x) {
|
|
122
|
+
return _getVCResult.apply(this, arguments);
|
|
123
|
+
}
|
|
124
|
+
return getVCResult;
|
|
125
|
+
}()
|
|
126
|
+
}, {
|
|
127
|
+
key: "getElementName",
|
|
128
|
+
value: function getElementName(element) {
|
|
129
|
+
return (0, _getElementName2.default)(this.selectorConfig, element);
|
|
130
|
+
}
|
|
131
|
+
}]);
|
|
132
|
+
}();
|
|
@@ -0,0 +1,75 @@
|
|
|
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 _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
|
+
var _percentileCalc = _interopRequireDefault(require("./percentile-calc"));
|
|
13
|
+
var _getViewportHeight = _interopRequireDefault(require("./utils/get-viewport-height"));
|
|
14
|
+
var _getViewportWidth = _interopRequireDefault(require("./utils/get-viewport-width"));
|
|
15
|
+
var AbstractVCCalculatorBase = exports.default = /*#__PURE__*/function () {
|
|
16
|
+
function AbstractVCCalculatorBase(revisionNo) {
|
|
17
|
+
(0, _classCallCheck2.default)(this, AbstractVCCalculatorBase);
|
|
18
|
+
this.revisionNo = revisionNo;
|
|
19
|
+
}
|
|
20
|
+
return (0, _createClass2.default)(AbstractVCCalculatorBase, [{
|
|
21
|
+
key: "calculate",
|
|
22
|
+
value: function () {
|
|
23
|
+
var _calculate = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
|
|
24
|
+
var _this = this,
|
|
25
|
+
_vcDetails$90$t,
|
|
26
|
+
_vcDetails$;
|
|
27
|
+
var orderedEntries, filteredEntries, isVCClean, vcDetails;
|
|
28
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
29
|
+
while (1) switch (_context.prev = _context.next) {
|
|
30
|
+
case 0:
|
|
31
|
+
orderedEntries = _ref.orderedEntries;
|
|
32
|
+
filteredEntries = orderedEntries.filter(function (entry) {
|
|
33
|
+
return _this.isEntryIncluded(entry);
|
|
34
|
+
});
|
|
35
|
+
isVCClean = this.isVCClean(filteredEntries);
|
|
36
|
+
if (isVCClean) {
|
|
37
|
+
_context.next = 5;
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
return _context.abrupt("return", {
|
|
41
|
+
revision: this.revisionNo,
|
|
42
|
+
'metric:vc90': null,
|
|
43
|
+
clean: false
|
|
44
|
+
});
|
|
45
|
+
case 5:
|
|
46
|
+
_context.next = 7;
|
|
47
|
+
return (0, _percentileCalc.default)({
|
|
48
|
+
viewport: {
|
|
49
|
+
width: (0, _getViewportWidth.default)(),
|
|
50
|
+
height: (0, _getViewportHeight.default)()
|
|
51
|
+
},
|
|
52
|
+
orderedEntries: filteredEntries,
|
|
53
|
+
percentiles: [25, 50, 75, 80, 85, 90, 95, 98, 99]
|
|
54
|
+
});
|
|
55
|
+
case 7:
|
|
56
|
+
vcDetails = _context.sent;
|
|
57
|
+
return _context.abrupt("return", {
|
|
58
|
+
revision: this.revisionNo,
|
|
59
|
+
vcDetails: vcDetails !== null && vcDetails !== void 0 ? vcDetails : undefined,
|
|
60
|
+
clean: isVCClean,
|
|
61
|
+
'metric:vc90': (_vcDetails$90$t = vcDetails === null || vcDetails === void 0 || (_vcDetails$ = vcDetails['90']) === null || _vcDetails$ === void 0 ? void 0 : _vcDetails$.t) !== null && _vcDetails$90$t !== void 0 ? _vcDetails$90$t : null
|
|
62
|
+
});
|
|
63
|
+
case 9:
|
|
64
|
+
case "end":
|
|
65
|
+
return _context.stop();
|
|
66
|
+
}
|
|
67
|
+
}, _callee, this);
|
|
68
|
+
}));
|
|
69
|
+
function calculate(_x) {
|
|
70
|
+
return _calculate.apply(this, arguments);
|
|
71
|
+
}
|
|
72
|
+
return calculate;
|
|
73
|
+
}()
|
|
74
|
+
}]);
|
|
75
|
+
}();
|
|
@@ -0,0 +1,60 @@
|
|
|
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 _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
11
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
12
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
13
|
+
var _abstractBaseVcCalculator = _interopRequireDefault(require("../abstract-base-vc-calculator"));
|
|
14
|
+
var _isViewportEntryData = _interopRequireDefault(require("../utils/is-viewport-entry-data"));
|
|
15
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
|
|
16
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
17
|
+
var ABORTING_WINDOW_EVENT = ['wheel', 'scroll', 'keydown', 'resize'];
|
|
18
|
+
var REVISION_NO = 'fy25.03';
|
|
19
|
+
var CONSIDERED_ENTRY_TYPE = ['mutation:child-element', 'mutation:element', 'mutation:attribute', 'layout-shift', 'window:event'];
|
|
20
|
+
var VCCalculator_FY25_03 = exports.default = /*#__PURE__*/function (_AbstractVCCalculator) {
|
|
21
|
+
function VCCalculator_FY25_03() {
|
|
22
|
+
(0, _classCallCheck2.default)(this, VCCalculator_FY25_03);
|
|
23
|
+
return _callSuper(this, VCCalculator_FY25_03, [REVISION_NO]);
|
|
24
|
+
}
|
|
25
|
+
(0, _inherits2.default)(VCCalculator_FY25_03, _AbstractVCCalculator);
|
|
26
|
+
return (0, _createClass2.default)(VCCalculator_FY25_03, [{
|
|
27
|
+
key: "isEntryIncluded",
|
|
28
|
+
value: function isEntryIncluded(entry) {
|
|
29
|
+
if (!CONSIDERED_ENTRY_TYPE.includes(entry.type)) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
if (entry.type === 'mutation:attribute') {
|
|
33
|
+
var entryData = entry.data;
|
|
34
|
+
var attributeName = entryData.attributeName;
|
|
35
|
+
if (!attributeName) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
if ((0, _isViewportEntryData.default)(entry.data) && !entry.data.visible) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
}, {
|
|
46
|
+
key: "isVCClean",
|
|
47
|
+
value: function isVCClean(filteredEntries) {
|
|
48
|
+
var hasAbortEvent = filteredEntries.some(function (entry) {
|
|
49
|
+
if (entry.type === 'window:event') {
|
|
50
|
+
var data = entry.data;
|
|
51
|
+
if (ABORTING_WINDOW_EVENT.includes(data.eventType)) {
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return false;
|
|
56
|
+
});
|
|
57
|
+
return !hasAbortEvent;
|
|
58
|
+
}
|
|
59
|
+
}]);
|
|
60
|
+
}(_abstractBaseVcCalculator.default);
|
package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js
ADDED
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.ViewportCanvas = void 0;
|
|
8
|
+
exports.calculateDrawnPixelsRaw = calculateDrawnPixelsRaw;
|
|
9
|
+
exports.getRGBComponents = getRGBComponents;
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
12
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
14
|
+
var _taskYield = _interopRequireDefault(require("../../utils/task-yield"));
|
|
15
|
+
// 24-bit color value
|
|
16
|
+
/**
|
|
17
|
+
* Class responsible for managing a scaled canvas and tracking pixel drawing operations.
|
|
18
|
+
* It uses an OffscreenCanvas for better performance and maintains a mapping between
|
|
19
|
+
* colors and timestamps for pixel counting purposes.
|
|
20
|
+
*/
|
|
21
|
+
var ViewportCanvas = exports.ViewportCanvas = /*#__PURE__*/function () {
|
|
22
|
+
/** The underlying OffscreenCanvas instance */
|
|
23
|
+
|
|
24
|
+
/** The 2D rendering context of the canvas */
|
|
25
|
+
|
|
26
|
+
/** Scale factor applied to the canvas (affects final pixel counts) */
|
|
27
|
+
|
|
28
|
+
/** Maps unique colors to their corresponding timestamps */
|
|
29
|
+
|
|
30
|
+
/** Counter used to generate unique colors */
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Creates a new ViewportCanvas instance.
|
|
34
|
+
* @param viewport - The dimensions of the viewport
|
|
35
|
+
* @param scaleFactor - Scale factor to apply to the canvas (default: 0.5)
|
|
36
|
+
* @throws {Error} If canvas context cannot be obtained
|
|
37
|
+
*/
|
|
38
|
+
function ViewportCanvas(viewport) {
|
|
39
|
+
var scaleFactor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
|
40
|
+
(0, _classCallCheck2.default)(this, ViewportCanvas);
|
|
41
|
+
this.scaleFactor = scaleFactor;
|
|
42
|
+
this.colorCounter = 1;
|
|
43
|
+
this.colorTimeMap = new Map();
|
|
44
|
+
|
|
45
|
+
// Calculate scaled dimensions
|
|
46
|
+
this.scaledWidth = Math.ceil(viewport.width * scaleFactor);
|
|
47
|
+
this.scaledHeight = Math.ceil(viewport.height * scaleFactor);
|
|
48
|
+
this.scaleX = this.scaledWidth / viewport.width;
|
|
49
|
+
this.scaleY = this.scaledHeight / viewport.height;
|
|
50
|
+
|
|
51
|
+
// Initialize OffscreenCanvas with scaled dimensions
|
|
52
|
+
this.canvas = document.createElement('canvas');
|
|
53
|
+
this.canvas.width = this.scaledWidth;
|
|
54
|
+
this.canvas.height = this.scaledHeight;
|
|
55
|
+
var ctx = this.canvas.getContext('2d', {
|
|
56
|
+
alpha: false,
|
|
57
|
+
// Disable alpha channel for better performance
|
|
58
|
+
willReadFrequently: true,
|
|
59
|
+
// Optimize for frequent pixel reading
|
|
60
|
+
colorSpace: 'srgb' // Use standard RGB color space
|
|
61
|
+
});
|
|
62
|
+
if (!ctx) {
|
|
63
|
+
throw new Error('Could not get canvas context');
|
|
64
|
+
}
|
|
65
|
+
this.ctx = ctx;
|
|
66
|
+
this.ctx.globalCompositeOperation = 'source-over';
|
|
67
|
+
this.clear();
|
|
68
|
+
}
|
|
69
|
+
return (0, _createClass2.default)(ViewportCanvas, [{
|
|
70
|
+
key: "getScaledDimensions",
|
|
71
|
+
value: function getScaledDimensions() {
|
|
72
|
+
return {
|
|
73
|
+
width: this.scaledWidth,
|
|
74
|
+
height: this.scaledHeight
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Clears the entire canvas by removing all drawn content.
|
|
80
|
+
* @private
|
|
81
|
+
*/
|
|
82
|
+
}, {
|
|
83
|
+
key: "clear",
|
|
84
|
+
value: function clear() {
|
|
85
|
+
this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Generates a unique RGB color from an incrementing counter.
|
|
90
|
+
* Uses a 24-bit color space (16,777,216 possible colors).
|
|
91
|
+
*
|
|
92
|
+
* @private
|
|
93
|
+
* @returns A unique RGB color string
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* // Example bit operations for color 0x00FF8040:
|
|
97
|
+
* // Red: (0x00FF8040 >> 16) & 0xFF = 0xFF = 255
|
|
98
|
+
* // Green: (0x00FF8040 >> 8) & 0xFF = 0x80 = 128
|
|
99
|
+
* // Blue: 0x00FF8040 & 0xFF = 0x40 = 64
|
|
100
|
+
*/
|
|
101
|
+
}, {
|
|
102
|
+
key: "generateColor",
|
|
103
|
+
value: function generateColor() {
|
|
104
|
+
// Wrap around at 16,777,215 (0x00FFFFFF) to stay within 24-bit color space
|
|
105
|
+
var rgbColor = this.colorCounter++ % 0x00ffffff;
|
|
106
|
+
return getRGBComponents(rgbColor);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Draws a rectangle on the canvas with a unique color and associates it with a timestamp.
|
|
111
|
+
* Each drawn rectangle gets a unique color which is mapped to the provided timestamp.
|
|
112
|
+
*
|
|
113
|
+
* @param rect - The rectangle dimensions to draw
|
|
114
|
+
* @param timestamp - The timestamp to associate with this drawing operation
|
|
115
|
+
*/
|
|
116
|
+
}, {
|
|
117
|
+
key: "drawRect",
|
|
118
|
+
value: function drawRect(rect, timestamp) {
|
|
119
|
+
var color = this.generateColor();
|
|
120
|
+
this.colorTimeMap.set(color, timestamp);
|
|
121
|
+
this.ctx.fillStyle = color;
|
|
122
|
+
if (this.scaleFactor === 1) {
|
|
123
|
+
return this.ctx.fillRect(rect.x, rect.y, rect.width, rect.height);
|
|
124
|
+
}
|
|
125
|
+
var scaledX = rect.x * this.scaleX;
|
|
126
|
+
var scaledY = rect.y * this.scaleY;
|
|
127
|
+
var scaledWidth = rect.width * this.scaleX;
|
|
128
|
+
var scaledHeight = rect.height * this.scaleY;
|
|
129
|
+
this.ctx.fillRect(Math.floor(scaledX), Math.ceil(scaledY), Math.max(scaledWidth, 1), Math.max(scaledHeight, 1));
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Calculates the number of pixels drawn for each timestamp.
|
|
134
|
+
* This method:
|
|
135
|
+
* 1. Reads the pixel data from the canvas
|
|
136
|
+
* 2. Counts pixels of each unique color
|
|
137
|
+
* 3. Maps colors back to their timestamps
|
|
138
|
+
* 4. Adjusts counts based on the scale factor
|
|
139
|
+
*
|
|
140
|
+
* @returns A Map containing timestamp to pixel count mappings
|
|
141
|
+
*/
|
|
142
|
+
}, {
|
|
143
|
+
key: "getPixelCounts",
|
|
144
|
+
value: (function () {
|
|
145
|
+
var _getPixelCounts = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
146
|
+
var imageData, timestampsAmount, pixelCounts, timePixelCounts, i, count, color, rgbColor, timestamp;
|
|
147
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
148
|
+
while (1) switch (_context.prev = _context.next) {
|
|
149
|
+
case 0:
|
|
150
|
+
imageData = this.ctx.getImageData(0, 0, this.canvas.width, this.canvas.height);
|
|
151
|
+
timestampsAmount = this.colorTimeMap.size;
|
|
152
|
+
_context.next = 4;
|
|
153
|
+
return calculateDrawnPixelsRaw(imageData, this.scaleFactor, timestampsAmount);
|
|
154
|
+
case 4:
|
|
155
|
+
pixelCounts = _context.sent;
|
|
156
|
+
// Convert color counts to timestamp counts
|
|
157
|
+
timePixelCounts = new Map();
|
|
158
|
+
i = 0;
|
|
159
|
+
case 7:
|
|
160
|
+
if (!(i < pixelCounts.length)) {
|
|
161
|
+
_context.next = 18;
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
count = pixelCounts[i];
|
|
165
|
+
if (!(typeof count !== 'number')) {
|
|
166
|
+
_context.next = 11;
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
return _context.abrupt("continue", 15);
|
|
170
|
+
case 11:
|
|
171
|
+
color = i + 1;
|
|
172
|
+
rgbColor = getRGBComponents(color);
|
|
173
|
+
timestamp = this.colorTimeMap.get(rgbColor);
|
|
174
|
+
if (timestamp !== undefined) {
|
|
175
|
+
timePixelCounts.set(timestamp, (timePixelCounts.get(timestamp) || 0) + count);
|
|
176
|
+
}
|
|
177
|
+
case 15:
|
|
178
|
+
i++;
|
|
179
|
+
_context.next = 7;
|
|
180
|
+
break;
|
|
181
|
+
case 18:
|
|
182
|
+
return _context.abrupt("return", timePixelCounts);
|
|
183
|
+
case 19:
|
|
184
|
+
case "end":
|
|
185
|
+
return _context.stop();
|
|
186
|
+
}
|
|
187
|
+
}, _callee, this);
|
|
188
|
+
}));
|
|
189
|
+
function getPixelCounts() {
|
|
190
|
+
return _getPixelCounts.apply(this, arguments);
|
|
191
|
+
}
|
|
192
|
+
return getPixelCounts;
|
|
193
|
+
}())
|
|
194
|
+
}]);
|
|
195
|
+
}();
|
|
196
|
+
/**
|
|
197
|
+
* Converts a number into RGB components in such a way that they can be recombined
|
|
198
|
+
* to form the original number using bitwise operations.
|
|
199
|
+
* @param number - The input number to be split into RGB components.
|
|
200
|
+
* @returns The RGB color string in the format "rgb(r, g, b)".
|
|
201
|
+
*/
|
|
202
|
+
function getRGBComponents(n) {
|
|
203
|
+
// Ensure the input is within the valid range for a 24-bit color
|
|
204
|
+
if (n < 0 || n > 0xffffff) {
|
|
205
|
+
throw new Error('Input number must be between 0 and 16777215 (inclusive).');
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
// Extract blue component (bits 0-7)
|
|
209
|
+
var blue = n & 0xff;
|
|
210
|
+
|
|
211
|
+
// Extract green component (bits 8-15)
|
|
212
|
+
var green = n >> 8 & 0xff;
|
|
213
|
+
|
|
214
|
+
// Extract red component (bits 16-23)
|
|
215
|
+
var red = n >> 16 & 0xff;
|
|
216
|
+
return "rgb(".concat(red, ", ").concat(green, ", ").concat(blue, ")");
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Calculates the number of pixels drawn for each color in the image data.
|
|
221
|
+
* @param imageData - The image data to analyze.
|
|
222
|
+
* @param scaleFactor - The scale factor applied to the canvas.
|
|
223
|
+
* @param arraySize - The amount of timestamps that were drawn in the viewport
|
|
224
|
+
* @returns A Map containing color to pixel count mappings.
|
|
225
|
+
*/
|
|
226
|
+
function calculateDrawnPixelsRaw(_x, _x2, _x3) {
|
|
227
|
+
return _calculateDrawnPixelsRaw.apply(this, arguments);
|
|
228
|
+
}
|
|
229
|
+
function _calculateDrawnPixelsRaw() {
|
|
230
|
+
_calculateDrawnPixelsRaw = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(imageData, scaleFactor, arraySize) {
|
|
231
|
+
var data, scaleCompensation, arr, i, color, colorIndex;
|
|
232
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
233
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
234
|
+
case 0:
|
|
235
|
+
data = imageData.data;
|
|
236
|
+
scaleCompensation = Math.round(1 / (scaleFactor * scaleFactor));
|
|
237
|
+
arr = new Uint32Array(arraySize);
|
|
238
|
+
i = 0;
|
|
239
|
+
case 4:
|
|
240
|
+
if (!(i < data.length)) {
|
|
241
|
+
_context2.next = 12;
|
|
242
|
+
break;
|
|
243
|
+
}
|
|
244
|
+
// Check alpha
|
|
245
|
+
if (data[i + 3] !== 0) {
|
|
246
|
+
// Combine RGB components into a single 24-bit color value:
|
|
247
|
+
// (data[i] << 16) - Shift red component left 16 bits (bits 16-23)
|
|
248
|
+
// (data[i + 1] << 8) - Shift green component left 8 bits (bits 8-15)
|
|
249
|
+
// data[i + 2] - Blue component stays as is (bits 0-7)
|
|
250
|
+
// The | operator combines all bits together
|
|
251
|
+
color = data[i] << 16 | data[i + 1] << 8 | data[i + 2];
|
|
252
|
+
colorIndex = color - 1;
|
|
253
|
+
arr[colorIndex] = (arr[colorIndex] || 0) + scaleCompensation;
|
|
254
|
+
}
|
|
255
|
+
if (!(i % 10000 === 0)) {
|
|
256
|
+
_context2.next = 9;
|
|
257
|
+
break;
|
|
258
|
+
}
|
|
259
|
+
_context2.next = 9;
|
|
260
|
+
return (0, _taskYield.default)();
|
|
261
|
+
case 9:
|
|
262
|
+
i += 4;
|
|
263
|
+
_context2.next = 4;
|
|
264
|
+
break;
|
|
265
|
+
case 12:
|
|
266
|
+
return _context2.abrupt("return", arr);
|
|
267
|
+
case 13:
|
|
268
|
+
case "end":
|
|
269
|
+
return _context2.stop();
|
|
270
|
+
}
|
|
271
|
+
}, _callee2);
|
|
272
|
+
}));
|
|
273
|
+
return _calculateDrawnPixelsRaw.apply(this, arguments);
|
|
274
|
+
}
|