screenci 0.0.21 → 0.0.23

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 (52) hide show
  1. package/dist/cli.d.ts +1 -1
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +145 -81
  4. package/dist/cli.js.map +1 -1
  5. package/dist/e2e/instrument.e2e.js +98 -68
  6. package/dist/e2e/instrument.e2e.js.map +1 -1
  7. package/dist/src/autoZoom.d.ts +34 -15
  8. package/dist/src/autoZoom.d.ts.map +1 -1
  9. package/dist/src/autoZoom.js +100 -69
  10. package/dist/src/autoZoom.js.map +1 -1
  11. package/dist/src/changeFocus.d.ts +129 -0
  12. package/dist/src/changeFocus.d.ts.map +1 -0
  13. package/dist/src/changeFocus.js +885 -0
  14. package/dist/src/changeFocus.js.map +1 -0
  15. package/dist/src/defaults.d.ts +2 -17
  16. package/dist/src/defaults.d.ts.map +1 -1
  17. package/dist/src/defaults.js +8 -16
  18. package/dist/src/defaults.js.map +1 -1
  19. package/dist/src/easing.d.ts +6 -0
  20. package/dist/src/easing.d.ts.map +1 -0
  21. package/dist/src/easing.js +30 -0
  22. package/dist/src/easing.js.map +1 -0
  23. package/dist/src/errors.d.ts +10 -0
  24. package/dist/src/errors.d.ts.map +1 -0
  25. package/dist/src/errors.js +26 -0
  26. package/dist/src/errors.js.map +1 -0
  27. package/dist/src/events.d.ts +34 -12
  28. package/dist/src/events.d.ts.map +1 -1
  29. package/dist/src/events.js +111 -30
  30. package/dist/src/events.js.map +1 -1
  31. package/dist/src/instrument.d.ts +0 -6
  32. package/dist/src/instrument.d.ts.map +1 -1
  33. package/dist/src/instrument.js +385 -812
  34. package/dist/src/instrument.js.map +1 -1
  35. package/dist/src/mouse.d.ts +128 -0
  36. package/dist/src/mouse.d.ts.map +1 -0
  37. package/dist/src/mouse.js +268 -0
  38. package/dist/src/mouse.js.map +1 -0
  39. package/dist/src/recordingData.d.ts +29 -4
  40. package/dist/src/recordingData.d.ts.map +1 -1
  41. package/dist/src/types.d.ts +4 -7
  42. package/dist/src/types.d.ts.map +1 -1
  43. package/dist/src/zoom.d.ts +69 -0
  44. package/dist/src/zoom.d.ts.map +1 -0
  45. package/dist/src/zoom.js +90 -0
  46. package/dist/src/zoom.js.map +1 -0
  47. package/dist/tsconfig.tsbuildinfo +1 -1
  48. package/package.json +1 -1
  49. package/dist/src/scroll.d.ts +0 -36
  50. package/dist/src/scroll.d.ts.map +0 -1
  51. package/dist/src/scroll.js +0 -274
  52. package/dist/src/scroll.js.map +0 -1
@@ -1,274 +0,0 @@
1
- import { getLastZoomLocation, getAllowZoomingOut, getZoomAmount, getZoomDuration, getZoomEasing, getZoomCentering, isInsideAutoZoom, } from './autoZoom.js';
2
- function clamp(value, min, max) {
3
- return Math.min(max, Math.max(min, value));
4
- }
5
- function resolveCenteringValue(centering) {
6
- if (centering === undefined)
7
- return 1;
8
- return clamp(centering, 0, 1);
9
- }
10
- /**
11
- * Best-effort scroll helper used by instrumentation.
12
- * Scrolls the nearest nested scroll container first, then the page viewport,
13
- * and returns the final bounding rect if it can be measured.
14
- *
15
- * Pass `amount` as `getZoomAmount() ?? 1` when inside an auto-zoom session,
16
- * or `1` otherwise.
17
- */
18
- export async function scrollTo(locator, height, amount, easing, duration) {
19
- return scrollToWithOptions(locator, {
20
- amount,
21
- centering: 1,
22
- allowZoomingOut: true,
23
- legacyHeight: height,
24
- ...(easing !== undefined && { easing }),
25
- ...(duration !== undefined && { duration }),
26
- });
27
- }
28
- async function scrollToWithOptions(locator, options) {
29
- const initialBb = await locator.boundingBox();
30
- if (!initialBb)
31
- return undefined;
32
- await locator.evaluate((element, opts) => new Promise((resolve) => {
33
- const frameMs = 1000 / 60;
34
- const durationMs = opts.duration ?? 600;
35
- const clampValue = (value, min, max) => Math.min(max, Math.max(min, value));
36
- // Duplicated below the serialization boundary; locator.evaluate
37
- // sends the callback as a string and cannot close over outer functions.
38
- const easingAtT = (t, easing) => {
39
- if (t <= 0)
40
- return 0;
41
- if (t >= 1)
42
- return 1;
43
- switch (easing) {
44
- case 'linear':
45
- return t;
46
- case 'ease-in':
47
- return t * t * t;
48
- case 'ease-out':
49
- return 1 - (1 - t) * (1 - t) * (1 - t);
50
- case 'ease-in-out':
51
- return t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2;
52
- case 'ease-in-strong':
53
- return t * t * t * t;
54
- case 'ease-out-strong':
55
- return 1 - (1 - t) * (1 - t) * (1 - t) * (1 - t);
56
- case 'ease-in-out-strong':
57
- return t < 0.5
58
- ? 8 * t * t * t * t
59
- : 1 - Math.pow(-2 * t + 2, 4) / 2;
60
- default: {
61
- const _ = easing;
62
- throw new Error(`Unknown easing: ${_}`);
63
- }
64
- }
65
- };
66
- const doc = element.ownerDocument;
67
- const win = doc.defaultView;
68
- if (!win) {
69
- resolve();
70
- return;
71
- }
72
- const viewportHeight = win.innerHeight || doc.documentElement.clientHeight;
73
- const viewportWidth = win.innerWidth || doc.documentElement.clientWidth;
74
- const elementRect = element.getBoundingClientRect();
75
- const isScrollable = (node) => {
76
- if (!node ||
77
- typeof node !== 'object' ||
78
- !('getBoundingClientRect' in node) ||
79
- !('clientHeight' in node) ||
80
- !('clientWidth' in node) ||
81
- !('scrollHeight' in node) ||
82
- !('scrollWidth' in node) ||
83
- !('scrollTop' in node) ||
84
- !('scrollLeft' in node)) {
85
- return false;
86
- }
87
- const el = node;
88
- const style = win.getComputedStyle(node);
89
- return (((style.overflowY === 'auto' ||
90
- style.overflowY === 'scroll' ||
91
- style.overflowY === 'overlay') &&
92
- el.scrollHeight > el.clientHeight) ||
93
- ((style.overflowX === 'auto' ||
94
- style.overflowX === 'scroll' ||
95
- style.overflowX === 'overlay') &&
96
- el.scrollWidth > el.clientWidth));
97
- };
98
- // Returns the desired edge offset (top or left) of the element within a
99
- // container, for one axis at a time. Closes over elementRect and opts.
100
- const resolveDesiredOffset = (rectSize, containerSize, containerWidth, containerHeight) => {
101
- if (opts.legacyHeight !== undefined) {
102
- return clampValue(Math.min(opts.legacyHeight, containerSize / 2 - rectSize / 2), 0, Math.max(0, containerSize - rectSize));
103
- }
104
- const effectiveAmount = clampValue(Math.max(opts.allowZoomingOut
105
- ? Math.max(opts.amount, elementRect.width / Math.max(1, containerWidth), elementRect.height / Math.max(1, containerHeight))
106
- : opts.amount, 0), 0, 1);
107
- const visibleSize = containerSize * effectiveAmount;
108
- const cropStart = Math.max(0, (containerSize - visibleSize) / 2);
109
- return clampValue(cropStart + ((visibleSize - rectSize) * opts.centering) / 2, 0, Math.max(0, containerSize - rectSize));
110
- };
111
- // Walks up the DOM collecting scroll plans for every scrollable ancestor
112
- // (excluding the document root, which is handled by planPageScroll).
113
- // Returns the plans and the accumulated viewport-space delta the element
114
- // will shift once all inner containers have scrolled — needed so each
115
- // outer container can project where the element will actually land.
116
- const buildAncestorScrollPlans = () => {
117
- const plans = [];
118
- let accDeltaTop = 0;
119
- let accDeltaLeft = 0;
120
- for (let current = element.parentElement; current; current = current.parentElement) {
121
- if (!isScrollable(current) ||
122
- current === doc.documentElement ||
123
- current === doc.body) {
124
- continue;
125
- }
126
- const containerRect = current.getBoundingClientRect();
127
- const projectedTop = elementRect.top - accDeltaTop;
128
- const projectedLeft = elementRect.left - accDeltaLeft;
129
- const startTop = current.scrollTop;
130
- const startLeft = current.scrollLeft;
131
- const targetTop = clampValue(startTop +
132
- (projectedTop -
133
- containerRect.top -
134
- resolveDesiredOffset(elementRect.height, current.clientHeight, current.clientWidth, current.clientHeight)), 0, Math.max(0, current.scrollHeight - current.clientHeight));
135
- const targetLeft = clampValue(startLeft +
136
- (projectedLeft -
137
- containerRect.left -
138
- resolveDesiredOffset(elementRect.width, current.clientWidth, current.clientWidth, current.clientHeight)), 0, Math.max(0, current.scrollWidth - current.clientWidth));
139
- plans.push({
140
- element: current,
141
- startTop,
142
- startLeft,
143
- targetTop,
144
- targetLeft,
145
- });
146
- accDeltaTop += targetTop - startTop;
147
- accDeltaLeft += targetLeft - startLeft;
148
- }
149
- return { plans, accDeltaTop, accDeltaLeft };
150
- };
151
- // Plans the window-level scroll, accounting for how far the element will
152
- // have moved once all nested ancestor scrolls are applied.
153
- const planPageScroll = (accDeltaTop, accDeltaLeft) => {
154
- const scrollHeight = Math.max(doc.documentElement.scrollHeight, doc.body?.scrollHeight ?? 0);
155
- const scrollWidth = Math.max(doc.documentElement.scrollWidth, doc.body?.scrollWidth ?? 0);
156
- const startY = win.scrollY;
157
- const startX = win.scrollX;
158
- const projectedTop = elementRect.top - accDeltaTop;
159
- const projectedLeft = elementRect.left - accDeltaLeft;
160
- return {
161
- startY,
162
- startX,
163
- targetY: clampValue(startY +
164
- (projectedTop -
165
- resolveDesiredOffset(elementRect.height, viewportHeight, viewportWidth, viewportHeight)), 0, Math.max(0, scrollHeight - viewportHeight)),
166
- targetX: clampValue(startX +
167
- (projectedLeft -
168
- resolveDesiredOffset(elementRect.width, viewportWidth, viewportWidth, viewportHeight)), 0, Math.max(0, scrollWidth - viewportWidth)),
169
- };
170
- };
171
- const { plans: ancestorScrollPlans, accDeltaTop, accDeltaLeft, } = buildAncestorScrollPlans();
172
- const { startY, startX, targetY, targetX } = planPageScroll(accDeltaTop, accDeltaLeft);
173
- const needsNestedScroll = ancestorScrollPlans.some((plan) => plan.targetTop !== plan.startTop ||
174
- plan.targetLeft !== plan.startLeft);
175
- const needsPageScroll = targetY !== startY || targetX !== startX;
176
- if (!needsNestedScroll && !needsPageScroll) {
177
- resolve();
178
- return;
179
- }
180
- const steps = Math.max(1, Math.floor(durationMs / frameMs));
181
- let step = 0;
182
- const scheduleNextFrame = () => {
183
- if (typeof win.requestAnimationFrame === 'function') {
184
- win.requestAnimationFrame(() => tick());
185
- return;
186
- }
187
- setTimeout(tick, frameMs);
188
- };
189
- const tick = () => {
190
- step += 1;
191
- const easedT = easingAtT(step / steps, opts.easing ?? 'ease-in-out');
192
- for (const plan of ancestorScrollPlans) {
193
- plan.element.scrollTop =
194
- plan.startTop + (plan.targetTop - plan.startTop) * easedT;
195
- plan.element.scrollLeft =
196
- plan.startLeft + (plan.targetLeft - plan.startLeft) * easedT;
197
- }
198
- win.scrollTo({
199
- top: startY + (targetY - startY) * easedT,
200
- left: startX + (targetX - startX) * easedT,
201
- behavior: 'auto',
202
- });
203
- if (step >= steps) {
204
- resolve();
205
- return;
206
- }
207
- scheduleNextFrame();
208
- };
209
- tick();
210
- }), options);
211
- const finalBb = await locator.boundingBox();
212
- if (!finalBb)
213
- return initialBb;
214
- return {
215
- x: finalBb.x,
216
- y: finalBb.y,
217
- width: finalBb.width,
218
- height: finalBb.height,
219
- };
220
- }
221
- export class ZoomScrollHandler {
222
- options;
223
- constructor(options = {}) {
224
- this.options = options;
225
- }
226
- isInsideAutoZoom = isInsideAutoZoom();
227
- lastZoomLocation = getLastZoomLocation();
228
- isFirstAutoZoomInteraction = this.isInsideAutoZoom && this.lastZoomLocation === null;
229
- hadPreviousZoomLocation = this.lastZoomLocation !== null;
230
- resolveScrollAnimationOptions() {
231
- if (!this.isInsideAutoZoom || this.isFirstAutoZoomInteraction) {
232
- return { easing: 'ease-in-out', duration: undefined };
233
- }
234
- return {
235
- easing: getZoomEasing() ?? 'ease-in-out',
236
- duration: getZoomDuration() ?? undefined,
237
- };
238
- }
239
- resolveScrollBehavior() {
240
- const amount = this.options.amount ??
241
- getZoomAmount() ??
242
- (this.isInsideAutoZoom ? 0.5 : 1);
243
- const centering = this.options.centering !== undefined
244
- ? resolveCenteringValue(this.options.centering)
245
- : (getZoomCentering() ?? (this.isInsideAutoZoom ? 1 : 1));
246
- const allowZoomingOut = this.options.allowZoomingOut ?? getAllowZoomingOut() ?? true;
247
- return { amount, centering, allowZoomingOut };
248
- }
249
- async scroll(locator, centeringOverride) {
250
- const { easing, duration } = this.resolveScrollAnimationOptions();
251
- const { amount, centering, allowZoomingOut } = this.resolveScrollBehavior();
252
- const effectiveCentering = centeringOverride !== undefined
253
- ? clamp(centeringOverride, 0, 1)
254
- : centering;
255
- const scrollStartMs = Date.now();
256
- const locatorRect = await scrollToWithOptions(locator, {
257
- amount,
258
- centering: effectiveCentering,
259
- allowZoomingOut,
260
- ...(easing !== undefined && { easing }),
261
- ...(duration !== undefined && { duration }),
262
- });
263
- const scrollEndMs = Date.now();
264
- return {
265
- locatorRect,
266
- scrollStartMs,
267
- scrollEndMs,
268
- scrollElapsedMs: Math.max(0, scrollEndMs - scrollStartMs),
269
- isFirstAutoZoomInteraction: this.isFirstAutoZoomInteraction,
270
- shouldScrollBeforeMouseMove: this.isFirstAutoZoomInteraction,
271
- };
272
- }
273
- }
274
- //# sourceMappingURL=scroll.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../src/scroll.ts"],"names":[],"mappings":"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"}