@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.
Files changed (182) 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 +10 -7
  8. package/dist/cjs/resource-timing/main.js +3 -3
  9. package/dist/cjs/segment/schedule-on-paint.js +35 -0
  10. package/dist/cjs/segment/segment.js +10 -1
  11. package/dist/cjs/vc/index.js +105 -1
  12. package/dist/cjs/vc/types.js +5 -0
  13. package/dist/cjs/vc/vc-observer/index.js +198 -208
  14. package/dist/cjs/vc/vc-observer-new/entries-timeline/index.js +56 -0
  15. package/dist/cjs/vc/vc-observer-new/get-element-name.js +68 -0
  16. package/dist/cjs/vc/vc-observer-new/index.js +132 -0
  17. package/dist/cjs/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +75 -0
  18. package/dist/cjs/vc/vc-observer-new/metric-calculator/fy25_03/index.js +60 -0
  19. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +274 -0
  20. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +151 -0
  21. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +367 -0
  22. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +397 -0
  23. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +5 -0
  24. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +61 -0
  25. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +151 -0
  26. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +107 -0
  27. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/types.js +5 -0
  28. package/dist/cjs/vc/vc-observer-new/metric-calculator/types.js +5 -0
  29. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.js +16 -0
  30. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.js +16 -0
  31. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.js +16 -0
  32. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/task-yield.js +45 -0
  33. package/dist/cjs/vc/vc-observer-new/types.js +5 -0
  34. package/dist/cjs/vc/vc-observer-new/viewport-observer/index.js +195 -0
  35. package/dist/cjs/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +71 -0
  36. package/dist/cjs/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +65 -0
  37. package/dist/cjs/vc/vc-observer-new/viewport-observer/performance-observer/index.js +58 -0
  38. package/dist/cjs/vc/vc-observer-new/viewport-observer/types.js +1 -0
  39. package/dist/cjs/vc/vc-observer-new/window-event-observer/index.js +54 -0
  40. package/dist/es2019/create-experimental-interaction-metrics-payload/index.js +2 -2
  41. package/dist/es2019/create-payload/index.js +8 -7
  42. package/dist/es2019/interaction-metrics/index.js +3 -3
  43. package/dist/es2019/interaction-metrics/post-interaction-log.js +5 -5
  44. package/dist/es2019/interaction-metrics-init/index.js +10 -7
  45. package/dist/es2019/resource-timing/main.js +3 -3
  46. package/dist/es2019/segment/schedule-on-paint.js +29 -0
  47. package/dist/es2019/segment/segment.js +9 -1
  48. package/dist/es2019/vc/index.js +56 -1
  49. package/dist/es2019/vc/types.js +1 -0
  50. package/dist/es2019/vc/vc-observer/index.js +1 -4
  51. package/dist/es2019/vc/vc-observer-new/entries-timeline/index.js +34 -0
  52. package/dist/es2019/vc/vc-observer-new/get-element-name.js +62 -0
  53. package/dist/es2019/vc/vc-observer-new/index.js +98 -0
  54. package/dist/es2019/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +38 -0
  55. package/dist/es2019/vc/vc-observer-new/metric-calculator/fy25_03/index.js +39 -0
  56. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +194 -0
  57. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +69 -0
  58. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +248 -0
  59. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +261 -0
  60. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +1 -0
  61. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +19 -0
  62. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +98 -0
  63. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +58 -0
  64. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/types.js +1 -0
  65. package/dist/es2019/vc/vc-observer-new/metric-calculator/types.js +1 -0
  66. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.js +9 -0
  67. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.js +9 -0
  68. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.js +10 -0
  69. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/task-yield.js +17 -0
  70. package/dist/es2019/vc/vc-observer-new/types.js +1 -0
  71. package/dist/es2019/vc/vc-observer-new/viewport-observer/index.js +168 -0
  72. package/dist/es2019/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +65 -0
  73. package/dist/es2019/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +48 -0
  74. package/dist/es2019/vc/vc-observer-new/viewport-observer/performance-observer/index.js +41 -0
  75. package/dist/es2019/vc/vc-observer-new/viewport-observer/types.js +0 -0
  76. package/dist/es2019/vc/vc-observer-new/window-event-observer/index.js +36 -0
  77. package/dist/esm/create-experimental-interaction-metrics-payload/index.js +52 -25
  78. package/dist/esm/create-payload/index.js +290 -231
  79. package/dist/esm/interaction-metrics/index.js +61 -23
  80. package/dist/esm/interaction-metrics/post-interaction-log.js +63 -34
  81. package/dist/esm/interaction-metrics-init/index.js +10 -7
  82. package/dist/esm/resource-timing/main.js +3 -3
  83. package/dist/esm/segment/schedule-on-paint.js +29 -0
  84. package/dist/esm/segment/segment.js +10 -1
  85. package/dist/esm/vc/index.js +104 -1
  86. package/dist/esm/vc/types.js +1 -0
  87. package/dist/esm/vc/vc-observer/index.js +198 -208
  88. package/dist/esm/vc/vc-observer-new/entries-timeline/index.js +50 -0
  89. package/dist/esm/vc/vc-observer-new/get-element-name.js +62 -0
  90. package/dist/esm/vc/vc-observer-new/index.js +126 -0
  91. package/dist/esm/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +69 -0
  92. package/dist/esm/vc/vc-observer-new/metric-calculator/fy25_03/index.js +54 -0
  93. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +268 -0
  94. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +143 -0
  95. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +361 -0
  96. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +390 -0
  97. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +1 -0
  98. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +54 -0
  99. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +144 -0
  100. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +100 -0
  101. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/types.js +1 -0
  102. package/dist/esm/vc/vc-observer-new/metric-calculator/types.js +1 -0
  103. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.js +10 -0
  104. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.js +10 -0
  105. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.js +10 -0
  106. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/task-yield.js +38 -0
  107. package/dist/esm/vc/vc-observer-new/types.js +1 -0
  108. package/dist/esm/vc/vc-observer-new/viewport-observer/index.js +189 -0
  109. package/dist/esm/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +65 -0
  110. package/dist/esm/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +59 -0
  111. package/dist/esm/vc/vc-observer-new/viewport-observer/performance-observer/index.js +51 -0
  112. package/dist/esm/vc/vc-observer-new/viewport-observer/types.js +0 -0
  113. package/dist/esm/vc/vc-observer-new/window-event-observer/index.js +48 -0
  114. package/dist/types/common/index.d.ts +1 -0
  115. package/dist/types/create-experimental-interaction-metrics-payload/index.d.ts +3 -2
  116. package/dist/types/create-payload/index.d.ts +4 -4
  117. package/dist/types/interaction-metrics/post-interaction-log.d.ts +3 -2
  118. package/dist/types/segment/schedule-on-paint.d.ts +2 -0
  119. package/dist/types/vc/index.d.ts +3 -3
  120. package/dist/types/vc/types.d.ts +34 -0
  121. package/dist/types/vc/vc-observer/index.d.ts +5 -21
  122. package/dist/types/vc/vc-observer-new/entries-timeline/index.d.ts +13 -0
  123. package/dist/types/vc/vc-observer-new/get-element-name.d.ts +8 -0
  124. package/dist/types/vc/vc-observer-new/index.d.ts +18 -0
  125. package/dist/types/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +9 -0
  126. package/dist/types/vc/vc-observer-new/metric-calculator/fy25_03/index.d.ts +7 -0
  127. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.d.ts +91 -0
  128. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts +4 -0
  129. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.d.ts +39 -0
  130. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts +8 -0
  131. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.d.ts +43 -0
  132. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/index.d.ts +3 -0
  133. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.d.ts +11 -0
  134. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.d.ts +23 -0
  135. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/types.d.ts +9 -0
  136. package/dist/types/vc/vc-observer-new/metric-calculator/types.d.ts +20 -0
  137. package/dist/types/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.d.ts +1 -0
  138. package/dist/types/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.d.ts +1 -0
  139. package/dist/types/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.d.ts +2 -0
  140. package/dist/types/vc/vc-observer-new/metric-calculator/utils/task-yield.d.ts +1 -0
  141. package/dist/types/vc/vc-observer-new/types.d.ts +21 -0
  142. package/dist/types/vc/vc-observer-new/viewport-observer/index.d.ts +22 -0
  143. package/dist/types/vc/vc-observer-new/viewport-observer/intersection-observer/index.d.ts +30 -0
  144. package/dist/types/vc/vc-observer-new/viewport-observer/mutation-observer/index.d.ts +14 -0
  145. package/dist/types/vc/vc-observer-new/viewport-observer/performance-observer/index.d.ts +14 -0
  146. package/dist/types/vc/vc-observer-new/viewport-observer/types.d.ts +10 -0
  147. package/dist/types/vc/vc-observer-new/window-event-observer/index.d.ts +17 -0
  148. package/dist/types-ts4.5/common/index.d.ts +1 -0
  149. package/dist/types-ts4.5/create-experimental-interaction-metrics-payload/index.d.ts +3 -2
  150. package/dist/types-ts4.5/create-payload/index.d.ts +4 -4
  151. package/dist/types-ts4.5/interaction-metrics/post-interaction-log.d.ts +3 -2
  152. package/dist/types-ts4.5/segment/schedule-on-paint.d.ts +2 -0
  153. package/dist/types-ts4.5/vc/index.d.ts +3 -3
  154. package/dist/types-ts4.5/vc/types.d.ts +34 -0
  155. package/dist/types-ts4.5/vc/vc-observer/index.d.ts +5 -21
  156. package/dist/types-ts4.5/vc/vc-observer-new/entries-timeline/index.d.ts +13 -0
  157. package/dist/types-ts4.5/vc/vc-observer-new/get-element-name.d.ts +8 -0
  158. package/dist/types-ts4.5/vc/vc-observer-new/index.d.ts +18 -0
  159. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +9 -0
  160. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/fy25_03/index.d.ts +7 -0
  161. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.d.ts +91 -0
  162. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts +4 -0
  163. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.d.ts +39 -0
  164. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts +8 -0
  165. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.d.ts +43 -0
  166. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/index.d.ts +3 -0
  167. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.d.ts +11 -0
  168. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.d.ts +23 -0
  169. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/types.d.ts +9 -0
  170. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/types.d.ts +20 -0
  171. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.d.ts +1 -0
  172. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.d.ts +1 -0
  173. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.d.ts +2 -0
  174. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/task-yield.d.ts +1 -0
  175. package/dist/types-ts4.5/vc/vc-observer-new/types.d.ts +21 -0
  176. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/index.d.ts +22 -0
  177. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/intersection-observer/index.d.ts +30 -0
  178. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/mutation-observer/index.d.ts +14 -0
  179. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/performance-observer/index.d.ts +14 -0
  180. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/types.d.ts +10 -0
  181. package/dist/types-ts4.5/vc/vc-observer-new/window-event-observer/index.d.ts +17 -0
  182. package/package.json +10 -1
@@ -5,7 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.VCObserver = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
8
9
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
9
11
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
12
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
13
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -99,182 +101,176 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
99
101
  ratios: _this.vcRatios
100
102
  };
101
103
  });
102
- (0, _defineProperty2.default)(this, "getVCResult", function (_ref3) {
103
- var start = _ref3.start,
104
- stop = _ref3.stop,
105
- tti = _ref3.tti,
106
- prefix = _ref3.prefix,
107
- ssr = _ref3.ssr,
108
- vc = _ref3.vc;
109
- var startTime = performance.now();
110
- // add local measurement
111
- var fullPrefix = prefix !== undefined && prefix !== '' ? "".concat(prefix, ":") : '';
112
- var rawData = vc !== undefined ? vc : _this.getVCRawData();
113
- if (rawData === null) {
114
- return {};
115
- }
116
- var abortReason = rawData.abortReason,
117
- abortReasonInfo = rawData.abortReasonInfo,
118
- heatmap = rawData.heatmap,
119
- heatmapNext = rawData.heatmapNext,
120
- outOfBoundaryInfo = rawData.outOfBoundaryInfo,
121
- totalTime = rawData.totalTime,
122
- componentsLog = rawData.componentsLog,
123
- viewport = rawData.viewport,
124
- devToolsEnabled = rawData.devToolsEnabled,
125
- ratios = rawData.ratios,
126
- multiHeatmap = rawData.multiHeatmap;
127
- if (abortReasonInfo !== null && abortReason.blocking) {
128
- // exposing data to devtools
129
- try {
130
- if (devToolsEnabled && !_this.isPostInteraction) {
131
- window.__vcNotAvailableReason = abortReasonInfo;
132
- }
133
- } catch (e) {}
134
- return (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:state"), false), "".concat(fullPrefix, "vc:abort:reason"), abortReasonInfo), "".concat(fullPrefix, "vc:abort:timestamp"), abortReason.timestamp);
135
- }
136
- var _VCObserver$calculate = VCObserver.calculateVC({
137
- heatmap: heatmap,
138
- ssr: ssr,
139
- componentsLog: _objectSpread({}, componentsLog),
140
- viewport: viewport
141
- }),
142
- VC = _VCObserver$calculate.VC,
143
- VCBox = _VCObserver$calculate.VCBox,
144
- VCEntries = _VCObserver$calculate.VCEntries,
145
- totalPainted = _VCObserver$calculate.totalPainted;
146
- try {
147
- if (!_this.isPostInteraction) {
148
- VCObserver.VCParts.forEach(function (key) {
149
- var duration = VC[key];
150
- if (duration !== null && duration !== undefined) {
151
- performance.measure("VC".concat(key), {
152
- start: start,
153
- duration: duration
154
- });
155
- }
156
- });
157
- }
158
- } catch (e) {
159
- /* empty */
160
- }
161
- var _componentsLog = {};
162
- // eslint-disable-next-line @atlaskit/platform/ensure-feature-flag-prefix
163
- if ((0, _platformFeatureFlags.fg)('ufo-remove-vc-component-observations-after-ttai')) {
164
- Object.entries(_this.componentsLog).forEach(function (_ref5) {
165
- var _ref6 = (0, _slicedToArray2.default)(_ref5, 2),
166
- _timestamp = _ref6[0],
167
- value = _ref6[1];
168
- var timestamp = Number(_timestamp);
169
- if (stop > timestamp) {
170
- _componentsLog[timestamp] = value;
171
- }
172
- });
173
- } else {
174
- _componentsLog = _objectSpread({}, componentsLog);
175
- }
176
- var vcNext = VCObserver.calculateVC({
177
- heatmap: heatmapNext,
178
- ssr: ssr,
179
- componentsLog: _componentsLog,
180
- viewport: viewport
181
- });
182
- try {
183
- if (!_this.isPostInteraction) {
184
- VCObserver.VCParts.forEach(function (key) {
185
- var duration = vcNext.VC[key];
186
- if (duration !== null && duration !== undefined) {
187
- performance.measure("VC_Next".concat(key), {
188
- start: start,
189
- duration: duration
104
+ (0, _defineProperty2.default)(this, "getVCResult", /*#__PURE__*/function () {
105
+ var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref3) {
106
+ var start, stop, tti, prefix, ssr, vc, startTime, fullPrefix, rawData, abortReason, abortReasonInfo, heatmap, heatmapNext, outOfBoundaryInfo, totalTime, componentsLog, viewport, devToolsEnabled, ratios, multiHeatmap, _VCObserver$calculate, VC, VCBox, VCEntries, totalPainted, _componentsLog, vcNext, outOfBoundary, stopTime, isMultiHeatmapEnabled, revisionsData, isCalcSpeedIndexEnabled;
107
+ return _regenerator.default.wrap(function _callee$(_context) {
108
+ while (1) switch (_context.prev = _context.next) {
109
+ case 0:
110
+ start = _ref3.start, stop = _ref3.stop, tti = _ref3.tti, prefix = _ref3.prefix, ssr = _ref3.ssr, vc = _ref3.vc;
111
+ startTime = performance.now(); // add local measurement
112
+ fullPrefix = prefix !== undefined && prefix !== '' ? "".concat(prefix, ":") : '';
113
+ rawData = vc !== undefined ? vc : _this.getVCRawData();
114
+ if (!(rawData === null)) {
115
+ _context.next = 6;
116
+ break;
117
+ }
118
+ return _context.abrupt("return", {});
119
+ case 6:
120
+ abortReason = rawData.abortReason, abortReasonInfo = rawData.abortReasonInfo, heatmap = rawData.heatmap, heatmapNext = rawData.heatmapNext, outOfBoundaryInfo = rawData.outOfBoundaryInfo, totalTime = rawData.totalTime, componentsLog = rawData.componentsLog, viewport = rawData.viewport, devToolsEnabled = rawData.devToolsEnabled, ratios = rawData.ratios, multiHeatmap = rawData.multiHeatmap;
121
+ if (!(abortReasonInfo !== null && abortReason.blocking)) {
122
+ _context.next = 10;
123
+ break;
124
+ }
125
+ // exposing data to devtools
126
+ try {
127
+ if (devToolsEnabled && !_this.isPostInteraction) {
128
+ window.__vcNotAvailableReason = abortReasonInfo;
129
+ }
130
+ } catch (e) {}
131
+ return _context.abrupt("return", (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:state"), false), "".concat(fullPrefix, "vc:abort:reason"), abortReasonInfo), "".concat(fullPrefix, "vc:abort:timestamp"), abortReason.timestamp));
132
+ case 10:
133
+ _VCObserver$calculate = VCObserver.calculateVC({
134
+ heatmap: heatmap,
135
+ ssr: ssr,
136
+ componentsLog: _objectSpread({}, componentsLog),
137
+ viewport: viewport
138
+ }), VC = _VCObserver$calculate.VC, VCBox = _VCObserver$calculate.VCBox, VCEntries = _VCObserver$calculate.VCEntries, totalPainted = _VCObserver$calculate.totalPainted;
139
+ try {
140
+ if (!_this.isPostInteraction) {
141
+ VCObserver.VCParts.forEach(function (key) {
142
+ var duration = VC[key];
143
+ if (duration !== null && duration !== undefined) {
144
+ performance.measure("VC".concat(key), {
145
+ start: start,
146
+ duration: duration
147
+ });
148
+ }
149
+ });
150
+ }
151
+ } catch (e) {
152
+ /* empty */
153
+ }
154
+ _componentsLog = {}; // eslint-disable-next-line @atlaskit/platform/ensure-feature-flag-prefix
155
+ if ((0, _platformFeatureFlags.fg)('ufo-remove-vc-component-observations-after-ttai')) {
156
+ Object.entries(_this.componentsLog).forEach(function (_ref6) {
157
+ var _ref7 = (0, _slicedToArray2.default)(_ref6, 2),
158
+ _timestamp = _ref7[0],
159
+ value = _ref7[1];
160
+ var timestamp = Number(_timestamp);
161
+ if (stop > timestamp) {
162
+ _componentsLog[timestamp] = value;
163
+ }
164
+ });
165
+ } else {
166
+ _componentsLog = _objectSpread({}, componentsLog);
167
+ }
168
+ vcNext = VCObserver.calculateVC({
169
+ heatmap: heatmapNext,
170
+ ssr: ssr,
171
+ componentsLog: _componentsLog,
172
+ viewport: viewport
190
173
  });
191
- }
192
- });
193
- }
194
- } catch (e) {
195
- /* empty */
196
- }
197
- var outOfBoundary = outOfBoundaryInfo ? (0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:oob"), outOfBoundaryInfo) : {};
198
- //const oldDomUpdates = oldDomUpdatesEnabled ? { [`${fullPrefix}vc:old:dom`]: vcNext.VCBox } : {};
199
-
200
- var stopTime = performance.now();
201
-
202
- // exposing data to devtools
203
- try {
204
- if (!_this.isPostInteraction && devToolsEnabled) {
205
- window.__vc = {
206
- entries: VCEntries.rel,
207
- log: componentsLog,
208
- metrics: {
209
- '75': VC['75'],
210
- '80': VC['80'],
211
- '85': VC['85'],
212
- '90': VC['90'],
213
- '95': VC['95'],
214
- '98': VC['98'],
215
- '99': VC['99'],
216
- tti: tti,
217
- ttai: stop - start
218
- },
219
- start: start,
220
- stop: stop,
221
- heatmap: heatmap,
222
- ratios: ratios
223
- };
224
- window.__vcNext = {
225
- entries: vcNext.VCEntries.rel,
226
- log: componentsLog,
227
- metrics: {
228
- '75': vcNext.VC['75'],
229
- '80': vcNext.VC['80'],
230
- '85': vcNext.VC['85'],
231
- '90': vcNext.VC['90'],
232
- '95': vcNext.VC['95'],
233
- '98': vcNext.VC['98'],
234
- '99': vcNext.VC['99'],
235
- tti: tti,
236
- ttai: stop - start
237
- },
238
- start: start,
239
- stop: stop,
240
- heatmap: heatmapNext,
241
- ratios: ratios
242
- };
174
+ try {
175
+ if (!_this.isPostInteraction) {
176
+ VCObserver.VCParts.forEach(function (key) {
177
+ var duration = vcNext.VC[key];
178
+ if (duration !== null && duration !== undefined) {
179
+ performance.measure("VC_Next".concat(key), {
180
+ start: start,
181
+ duration: duration
182
+ });
183
+ }
184
+ });
185
+ }
186
+ } catch (e) {
187
+ /* empty */
188
+ }
189
+ outOfBoundary = outOfBoundaryInfo ? (0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:oob"), outOfBoundaryInfo) : {}; //const oldDomUpdates = oldDomUpdatesEnabled ? { [`${fullPrefix}vc:old:dom`]: vcNext.VCBox } : {};
190
+ stopTime = performance.now(); // exposing data to devtools
191
+ try {
192
+ if (!_this.isPostInteraction && devToolsEnabled) {
193
+ window.__vc = {
194
+ entries: VCEntries.rel,
195
+ log: componentsLog,
196
+ metrics: {
197
+ '75': VC['75'],
198
+ '80': VC['80'],
199
+ '85': VC['85'],
200
+ '90': VC['90'],
201
+ '95': VC['95'],
202
+ '98': VC['98'],
203
+ '99': VC['99'],
204
+ tti: tti,
205
+ ttai: stop - start
206
+ },
207
+ start: start,
208
+ stop: stop,
209
+ heatmap: heatmap,
210
+ ratios: ratios
211
+ };
212
+ window.__vcNext = {
213
+ entries: vcNext.VCEntries.rel,
214
+ log: componentsLog,
215
+ metrics: {
216
+ '75': vcNext.VC['75'],
217
+ '80': vcNext.VC['80'],
218
+ '85': vcNext.VC['85'],
219
+ '90': vcNext.VC['90'],
220
+ '95': vcNext.VC['95'],
221
+ '98': vcNext.VC['98'],
222
+ '99': vcNext.VC['99'],
223
+ tti: tti,
224
+ ttai: stop - start
225
+ },
226
+ start: start,
227
+ stop: stop,
228
+ heatmap: heatmapNext,
229
+ ratios: ratios
230
+ };
243
231
 
244
- // Emitting a custom event to make it available in the Chrome extension
245
- window.dispatchEvent(new CustomEvent('vcReady', {
246
- detail: {
247
- log: filterComponentsLog(componentsLog),
248
- entries: VCEntries.rel
249
- }
250
- }));
251
- }
252
- } catch (e) {
253
- /* do nothing */
254
- }
255
- var isMultiHeatmapEnabled = (0, _platformFeatureFlags.fg)('ufo_vc_multiheatmap');
256
- var revisionsData = isMultiHeatmapEnabled && multiHeatmap !== null ? (0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:rev"), multiHeatmap.getPayloadShapedData({
257
- VCParts: VCObserver.VCParts.map(function (v) {
258
- return parseInt(v);
259
- }),
260
- VCCalculationMethods: (0, _revisions.getRevisions)().map(function (_ref8) {
261
- var classifier = _ref8.classifier;
262
- return classifier.VCCalculationMethod;
263
- }),
264
- filterComponentsLog: (0, _revisions.getRevisions)().map(function (_ref9) {
265
- var classifier = _ref9.classifier;
266
- return classifier.filterComponentsLog;
267
- }),
268
- ttai: stop,
269
- ssr: ssr,
270
- clean: !abortReasonInfo
271
- })) : null;
272
- // eslint-disable-next-line @atlaskit/platform/ensure-feature-flag-prefix
273
- var isCalcSpeedIndexEnabled = (0, _platformFeatureFlags.fg)('ufo-calc-speed-index');
274
- return _objectSpread(_objectSpread(_objectSpread((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({
275
- 'metrics:vc': VC
276
- }, "".concat(fullPrefix, "vc:state"), true), "".concat(fullPrefix, "vc:clean"), !abortReasonInfo), "".concat(fullPrefix, "vc:dom"), VCBox), "".concat(fullPrefix, "vc:updates"), VCEntries.rel.slice(0, 50)), "".concat(fullPrefix, "vc:size"), viewport), "".concat(fullPrefix, "vc:time"), Math.round(totalTime + (stopTime - startTime))), "".concat(fullPrefix, "vc:total"), totalPainted), "".concat(fullPrefix, "vc:ratios"), ratios), outOfBoundary), {}, (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:next"), vcNext.VC), "".concat(fullPrefix, "vc:next:updates"), vcNext.VCEntries.rel.slice(0, 50)), "".concat(fullPrefix, "vc:next:dom"), vcNext.VCBox), "".concat(fullPrefix, "vc:ignored"), _this.getIgnoredElements(componentsLog)), revisionsData), {}, (0, _defineProperty2.default)((0, _defineProperty2.default)({}, "ufo:speedIndex", isCalcSpeedIndexEnabled ? VCEntries.speedIndex : undefined), "ufo:next:speedIndex", isCalcSpeedIndexEnabled ? vcNext.VCEntries.speedIndex : undefined));
277
- });
232
+ // Emitting a custom event to make it available in the Chrome extension
233
+ window.dispatchEvent(new CustomEvent('vcReady', {
234
+ detail: {
235
+ log: filterComponentsLog(componentsLog),
236
+ entries: VCEntries.rel
237
+ }
238
+ }));
239
+ }
240
+ } catch (e) {
241
+ /* do nothing */
242
+ }
243
+ isMultiHeatmapEnabled = (0, _platformFeatureFlags.fg)('ufo_vc_multiheatmap');
244
+ revisionsData = isMultiHeatmapEnabled && multiHeatmap !== null ? (0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:rev"), multiHeatmap.getPayloadShapedData({
245
+ VCParts: VCObserver.VCParts.map(function (v) {
246
+ return parseInt(v);
247
+ }),
248
+ VCCalculationMethods: (0, _revisions.getRevisions)().map(function (_ref9) {
249
+ var classifier = _ref9.classifier;
250
+ return classifier.VCCalculationMethod;
251
+ }),
252
+ filterComponentsLog: (0, _revisions.getRevisions)().map(function (_ref10) {
253
+ var classifier = _ref10.classifier;
254
+ return classifier.filterComponentsLog;
255
+ }),
256
+ ttai: stop,
257
+ ssr: ssr,
258
+ clean: !abortReasonInfo
259
+ })) : null; // eslint-disable-next-line @atlaskit/platform/ensure-feature-flag-prefix
260
+ isCalcSpeedIndexEnabled = (0, _platformFeatureFlags.fg)('ufo-calc-speed-index');
261
+ return _context.abrupt("return", _objectSpread(_objectSpread(_objectSpread((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({
262
+ 'metrics:vc': VC
263
+ }, "".concat(fullPrefix, "vc:state"), true), "".concat(fullPrefix, "vc:clean"), !abortReasonInfo), "".concat(fullPrefix, "vc:dom"), VCBox), "".concat(fullPrefix, "vc:updates"), VCEntries.rel.slice(0, 50)), "".concat(fullPrefix, "vc:size"), viewport), "".concat(fullPrefix, "vc:time"), Math.round(totalTime + (stopTime - startTime))), "".concat(fullPrefix, "vc:total"), totalPainted), "".concat(fullPrefix, "vc:ratios"), ratios), outOfBoundary), {}, (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:next"), vcNext.VC), "".concat(fullPrefix, "vc:next:updates"), vcNext.VCEntries.rel.slice(0, 50)), "".concat(fullPrefix, "vc:next:dom"), vcNext.VCBox), "".concat(fullPrefix, "vc:ignored"), _this.getIgnoredElements(componentsLog)), revisionsData), {}, (0, _defineProperty2.default)((0, _defineProperty2.default)({}, "ufo:speedIndex", isCalcSpeedIndexEnabled ? VCEntries.speedIndex : undefined), "ufo:next:speedIndex", isCalcSpeedIndexEnabled ? vcNext.VCEntries.speedIndex : undefined)));
264
+ case 23:
265
+ case "end":
266
+ return _context.stop();
267
+ }
268
+ }, _callee);
269
+ }));
270
+ return function (_x) {
271
+ return _ref4.apply(this, arguments);
272
+ };
273
+ }());
278
274
  (0, _defineProperty2.default)(this, "handleUpdate", function (rawTime, intersectionRect, targetName, element, type, ignoreReason) {
279
275
  _this.measureStart();
280
276
  _this.legacyHandleUpdate(rawTime, intersectionRect, targetName, element, type, ignoreReason);
@@ -312,13 +308,13 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
312
308
  });
313
309
  }
314
310
  });
315
- (0, _defineProperty2.default)(this, "onViewportChangeDetected", function (_ref11) {
316
- var element = _ref11.element,
317
- type = _ref11.type,
318
- ignoreReason = _ref11.ignoreReason,
319
- timestamp = _ref11.timestamp,
320
- targetName = _ref11.targetName,
321
- intersectionRect = _ref11.intersectionRect;
311
+ (0, _defineProperty2.default)(this, "onViewportChangeDetected", function (_ref12) {
312
+ var element = _ref12.element,
313
+ type = _ref12.type,
314
+ ignoreReason = _ref12.ignoreReason,
315
+ timestamp = _ref12.timestamp,
316
+ targetName = _ref12.targetName,
317
+ intersectionRect = _ref12.intersectionRect;
322
318
  if (_this.multiHeatmap === null) {
323
319
  return;
324
320
  }
@@ -400,10 +396,10 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
400
396
  var unbinds = (0, _attachAbortListeners.attachAbortListeners)(window, _this.viewport, _this.abortReasonCallback);
401
397
  if ((_window = window) !== null && _window !== void 0 && _window.__SSR_ABORT_LISTENERS__) {
402
398
  var _window2;
403
- Object.entries(window.__SSR_ABORT_LISTENERS__.aborts).forEach(function (_ref12) {
404
- var _ref13 = (0, _slicedToArray2.default)(_ref12, 2),
405
- key = _ref13[0],
406
- time = _ref13[1];
399
+ Object.entries(window.__SSR_ABORT_LISTENERS__.aborts).forEach(function (_ref13) {
400
+ var _ref14 = (0, _slicedToArray2.default)(_ref13, 2),
401
+ key = _ref14[0],
402
+ time = _ref14[1];
407
403
  if (time) {
408
404
  _this.abortReasonCallback(key, time);
409
405
  }
@@ -438,8 +434,8 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
438
434
  }
439
435
  return (0, _createClass2.default)(VCObserver, [{
440
436
  key: "start",
441
- value: function start(_ref14) {
442
- var startTime = _ref14.startTime;
437
+ value: function start(_ref15) {
438
+ var startTime = _ref15.startTime;
443
439
  this.active = true;
444
440
  if (this.observers.isBrowserSupported()) {
445
441
  this.setViewportSize();
@@ -461,12 +457,12 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
461
457
  }, {
462
458
  key: "getIgnoredElements",
463
459
  value: function getIgnoredElements(componentsLog) {
464
- return Object.values(componentsLog).flat().filter(function (_ref15) {
465
- var ignoreReason = _ref15.ignoreReason;
460
+ return Object.values(componentsLog).flat().filter(function (_ref16) {
461
+ var ignoreReason = _ref16.ignoreReason;
466
462
  return Boolean(ignoreReason);
467
- }).map(function (_ref16) {
468
- var targetName = _ref16.targetName,
469
- ignoreReason = _ref16.ignoreReason;
463
+ }).map(function (_ref17) {
464
+ var targetName = _ref17.targetName,
465
+ ignoreReason = _ref17.ignoreReason;
470
466
  return {
471
467
  targetName: targetName,
472
468
  ignoreReason: ignoreReason
@@ -490,12 +486,6 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
490
486
  var stopTime = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : performance.now();
491
487
  this.observers.setReactRootRenderStop(stopTime);
492
488
  }
493
- }, {
494
- key: "abortObservation",
495
- value: function abortObservation() {
496
- var abortReason = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'custom';
497
- this.setAbortReason(abortReason, performance.now());
498
- }
499
489
  }, {
500
490
  key: "setAbortReason",
501
491
  value: function setAbortReason(abort, timestamp) {
@@ -594,12 +584,12 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
594
584
  }
595
585
  }], [{
596
586
  key: "calculateVC",
597
- value: function calculateVC(_ref17) {
598
- var heatmap = _ref17.heatmap,
599
- _ref17$ssr = _ref17.ssr,
600
- ssr = _ref17$ssr === void 0 ? UNUSED_SECTOR : _ref17$ssr,
601
- componentsLog = _ref17.componentsLog,
602
- viewport = _ref17.viewport;
587
+ value: function calculateVC(_ref18) {
588
+ var heatmap = _ref18.heatmap,
589
+ _ref18$ssr = _ref18.ssr,
590
+ ssr = _ref18$ssr === void 0 ? UNUSED_SECTOR : _ref18$ssr,
591
+ componentsLog = _ref18.componentsLog,
592
+ viewport = _ref18.viewport;
603
593
  var lastUpdate = {};
604
594
  var totalPainted = 0;
605
595
  if (ssr !== UNUSED_SECTOR) {
@@ -668,11 +658,11 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
668
658
  });
669
659
  return VCRatio;
670
660
  }, 0);
671
- var VCEntries = entries.reduce(function (acc, _ref18, i) {
661
+ var VCEntries = entries.reduce(function (acc, _ref19, i) {
672
662
  var _acc$abs, _componentsLog$timest, _acc$rel$vc, _acc$rel;
673
- var _ref19 = (0, _slicedToArray2.default)(_ref18, 2),
674
- timestamp = _ref19[0],
675
- entryPainted = _ref19[1];
663
+ var _ref20 = (0, _slicedToArray2.default)(_ref19, 2),
664
+ timestamp = _ref20[0],
665
+ entryPainted = _ref20[1];
676
666
  var currentlyPainted = entryPainted + (((_acc$abs = acc.abs[i - 1]) === null || _acc$abs === void 0 ? void 0 : _acc$abs[1]) || 0);
677
667
  var currentlyPaintedRatio = Math.round(currentlyPainted / totalPainted * 1000) / 10;
678
668
  var logEntry = (0, _toConsumableArray2.default)(new Set((_componentsLog$timest = componentsLog[timestamp]) === null || _componentsLog$timest === void 0 ? void 0 : _componentsLog$timest.map(function (v) {
@@ -0,0 +1,56 @@
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 EntriesTimeline = exports.default = /*#__PURE__*/function () {
12
+ function EntriesTimeline() {
13
+ (0, _classCallCheck2.default)(this, EntriesTimeline);
14
+ (0, _defineProperty2.default)(this, "unorderedEntries", []);
15
+ (0, _defineProperty2.default)(this, "sortedEntriesCache", new Map());
16
+ this.unorderedEntries = [];
17
+ }
18
+ return (0, _createClass2.default)(EntriesTimeline, [{
19
+ key: "push",
20
+ value: function push(entry) {
21
+ this.unorderedEntries.push(entry);
22
+ this.sortedEntriesCache.clear();
23
+ }
24
+ }, {
25
+ key: "getCacheKey",
26
+ value: function getCacheKey(start, stop) {
27
+ return "".concat(start !== null && start !== void 0 ? start : 'null', "_").concat(stop !== null && stop !== void 0 ? stop : 'null');
28
+ }
29
+ }, {
30
+ key: "getOrderedEntries",
31
+ value: function getOrderedEntries(_ref) {
32
+ var _this$sortedEntriesCa;
33
+ var start = _ref.start,
34
+ stop = _ref.stop;
35
+ var cacheKey = this.getCacheKey(start, stop);
36
+ var cachedSortedEntries = (_this$sortedEntriesCa = this.sortedEntriesCache.get(cacheKey)) === null || _this$sortedEntriesCa === void 0 ? void 0 : _this$sortedEntriesCa.deref();
37
+ if (cachedSortedEntries) {
38
+ return cachedSortedEntries;
39
+ }
40
+ var filteredEntries = this.unorderedEntries.filter(function (e) {
41
+ return e.time >= (start !== null && start !== void 0 ? start : 0) && e.time <= (stop !== null && stop !== void 0 ? stop : performance.now());
42
+ });
43
+ var sortedEntries = filteredEntries.sort(function (a, b) {
44
+ return a.time - b.time;
45
+ });
46
+ this.sortedEntriesCache.set(cacheKey, new WeakRef(sortedEntries));
47
+ return sortedEntries;
48
+ }
49
+ }, {
50
+ key: "clear",
51
+ value: function clear() {
52
+ this.unorderedEntries = [];
53
+ this.sortedEntriesCache.clear();
54
+ }
55
+ }]);
56
+ }();
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = getElementName;
7
+ var nameCache = new WeakMap();
8
+ function getAttributeSelector(element, attributeName) {
9
+ var attrValue = element.getAttribute(attributeName);
10
+ if (!attrValue) {
11
+ return '';
12
+ }
13
+ return "[".concat(attributeName, "=\"").concat(encodeURIComponent(attrValue), "\"]");
14
+ }
15
+ function isSelectorUnique(selector) {
16
+ return document.querySelectorAll(selector).length === 1;
17
+ }
18
+ function getUniqueSelector(selectorConfig, element) {
19
+ var currentElement = element;
20
+ var parts = [];
21
+ while (currentElement && currentElement.localName !== 'body') {
22
+ var tagName = currentElement.localName;
23
+ var selectorPart = tagName;
24
+ if (selectorConfig.id && currentElement.id) {
25
+ selectorPart += "#".concat(encodeURIComponent(currentElement.id));
26
+ } else if (selectorConfig.dataVC) {
27
+ selectorPart += getAttributeSelector(currentElement, 'data-vc');
28
+ } else if (selectorConfig.testId) {
29
+ selectorPart += getAttributeSelector(currentElement, 'data-testid') || getAttributeSelector(currentElement, 'data-test-id');
30
+ } else if (selectorConfig.role) {
31
+ selectorPart += getAttributeSelector(currentElement, 'role');
32
+ } else if (selectorConfig.className && currentElement.className) {
33
+ var classNames = Array.from(currentElement.classList).map(encodeURIComponent).join('.');
34
+ if (classNames) {
35
+ selectorPart += ".".concat(classNames);
36
+ }
37
+ }
38
+ parts.unshift(selectorPart);
39
+ var _potentialSelector = parts.join(' > ').trim();
40
+ if (_potentialSelector && isSelectorUnique(_potentialSelector)) {
41
+ return _potentialSelector;
42
+ }
43
+ currentElement = currentElement.parentElement;
44
+ }
45
+ var potentialSelector = parts.join(' > ').trim();
46
+ if (!potentialSelector) {
47
+ return 'unknown';
48
+ } else if (!isSelectorUnique(potentialSelector)) {
49
+ var parentElement = element.parentElement;
50
+ if (parentElement) {
51
+ var siblingIndex = Array.from(parentElement.children).indexOf(element) + 1;
52
+ return "".concat(potentialSelector, ":nth-child(").concat(siblingIndex, ")");
53
+ }
54
+ }
55
+ return potentialSelector;
56
+ }
57
+ function getElementName(selectorConfig, element) {
58
+ if (!(element instanceof HTMLElement)) {
59
+ return 'error';
60
+ }
61
+ var cachedName = nameCache.get(element);
62
+ if (cachedName) {
63
+ return cachedName;
64
+ }
65
+ var uniqueSelector = getUniqueSelector(selectorConfig, element);
66
+ nameCache.set(element, uniqueSelector);
67
+ return uniqueSelector;
68
+ }