@atlaskit/react-ufo 3.1.4 → 3.3.0

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