@scenetest/scenes 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/dsl.test.js +4 -0
- package/dist/__tests__/dsl.test.js.map +1 -1
- package/dist/__tests__/keyboard.test.d.ts +2 -0
- package/dist/__tests__/keyboard.test.d.ts.map +1 -0
- package/dist/__tests__/keyboard.test.js +332 -0
- package/dist/__tests__/keyboard.test.js.map +1 -0
- package/dist/__tests__/reactive.test.js +210 -6
- package/dist/__tests__/reactive.test.js.map +1 -1
- package/dist/actor.d.ts +20 -4
- package/dist/actor.d.ts.map +1 -1
- package/dist/actor.js +168 -12
- package/dist/actor.js.map +1 -1
- package/dist/builtin-macros.d.ts +87 -0
- package/dist/builtin-macros.d.ts.map +1 -0
- package/dist/builtin-macros.js +154 -0
- package/dist/builtin-macros.js.map +1 -0
- package/dist/cli.js +12 -0
- package/dist/cli.js.map +1 -1
- package/dist/devices.d.ts +6 -0
- package/dist/devices.d.ts.map +1 -1
- package/dist/devices.js +13 -0
- package/dist/devices.js.map +1 -1
- package/dist/dsl.d.ts +4 -0
- package/dist/dsl.d.ts.map +1 -1
- package/dist/dsl.js +13 -1
- package/dist/dsl.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/keyboard.d.ts +168 -0
- package/dist/keyboard.d.ts.map +1 -0
- package/dist/keyboard.js +370 -0
- package/dist/keyboard.js.map +1 -0
- package/dist/reactive.d.ts +24 -2
- package/dist/reactive.d.ts.map +1 -1
- package/dist/reactive.js +138 -16
- package/dist/reactive.js.map +1 -1
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +47 -10
- package/dist/runner.js.map +1 -1
- package/dist/swarm.d.ts +1 -1
- package/dist/swarm.d.ts.map +1 -1
- package/dist/swarm.js +2 -2
- package/dist/swarm.js.map +1 -1
- package/dist/team-manager.d.ts +48 -3
- package/dist/team-manager.d.ts.map +1 -1
- package/dist/team-manager.js +150 -15
- package/dist/team-manager.js.map +1 -1
- package/dist/types.d.ts +115 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/keyboard.js
ADDED
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tab forward through the page until the target element (or a focusable
|
|
3
|
+
* descendant of it) receives focus.
|
|
4
|
+
*
|
|
5
|
+
* This simulates a real keyboard user pressing Tab repeatedly to reach
|
|
6
|
+
* an interactive element. If the element can't be reached after `maxTabs`
|
|
7
|
+
* presses, it throws — indicating a keyboard-accessibility problem.
|
|
8
|
+
*
|
|
9
|
+
* @param page - Playwright Page
|
|
10
|
+
* @param target - Locator for the element to reach
|
|
11
|
+
* @param opts - Options (maxTabs, timeout)
|
|
12
|
+
*/
|
|
13
|
+
export async function tabToElement(page, target, opts = {}) {
|
|
14
|
+
const maxTabs = opts.maxTabs ?? 100;
|
|
15
|
+
const timeout = opts.timeout ?? 10000;
|
|
16
|
+
const deadline = Date.now() + timeout;
|
|
17
|
+
// Get a handle to the target element so we can compare in-page
|
|
18
|
+
const targetHandle = await target.elementHandle({ timeout: Math.min(5000, timeout) });
|
|
19
|
+
if (!targetHandle) {
|
|
20
|
+
throw new Error('Keyboard navigation: target element not found in DOM');
|
|
21
|
+
}
|
|
22
|
+
// Track where we started to detect full cycles
|
|
23
|
+
let startElement = null;
|
|
24
|
+
for (let i = 0; i < maxTabs; i++) {
|
|
25
|
+
if (Date.now() > deadline) {
|
|
26
|
+
throw new Error(`Keyboard navigation: timed out after ${timeout}ms trying to Tab to element`);
|
|
27
|
+
}
|
|
28
|
+
await page.keyboard.press('Tab');
|
|
29
|
+
// Check if focus landed on or within the target element
|
|
30
|
+
const result = await targetHandle.evaluate((el) => {
|
|
31
|
+
const active = document.activeElement;
|
|
32
|
+
if (!active || active === document.body)
|
|
33
|
+
return 'nobody';
|
|
34
|
+
if (el === active || el.contains(active))
|
|
35
|
+
return 'found';
|
|
36
|
+
// Return a stable identifier so we can detect cycles
|
|
37
|
+
return active.tagName + active.id;
|
|
38
|
+
});
|
|
39
|
+
if (result === 'found') {
|
|
40
|
+
return; // Successfully tabbed to element
|
|
41
|
+
}
|
|
42
|
+
// Detect full cycle (focus wrapped back to start)
|
|
43
|
+
if (i === 0) {
|
|
44
|
+
startElement = result;
|
|
45
|
+
}
|
|
46
|
+
else if (i > 2 && result === startElement) {
|
|
47
|
+
throw new Error('Keyboard navigation: Tab focus cycled back to the starting element without ' +
|
|
48
|
+
'reaching the target. The element may not be keyboard-accessible ' +
|
|
49
|
+
'(missing tabindex, not a natively focusable element, or hidden from tab order).');
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
throw new Error(`Keyboard navigation: could not reach element via Tab after ${maxTabs} key presses. ` +
|
|
53
|
+
'The element may not be keyboard-accessible (missing tabindex, not a ' +
|
|
54
|
+
'natively focusable element, or the page has too many focusable elements).');
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Press Enter on the currently focused element.
|
|
58
|
+
*/
|
|
59
|
+
export async function pressEnter(page) {
|
|
60
|
+
await page.keyboard.press('Enter');
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Press Space on the currently focused element.
|
|
64
|
+
* Used for toggling checkboxes and activating certain controls.
|
|
65
|
+
*/
|
|
66
|
+
export async function pressSpace(page) {
|
|
67
|
+
await page.keyboard.press('Space');
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Type text character by character into the currently focused element.
|
|
71
|
+
* Clears existing content first by selecting all.
|
|
72
|
+
*/
|
|
73
|
+
export async function clearAndType(page, value) {
|
|
74
|
+
// Select all existing content and delete it
|
|
75
|
+
await page.keyboard.press('Control+a');
|
|
76
|
+
await page.keyboard.press('Backspace');
|
|
77
|
+
// Type the new value character by character
|
|
78
|
+
await page.keyboard.type(value);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Navigate a <select> element's options using arrow keys.
|
|
82
|
+
* Assumes the select is already focused.
|
|
83
|
+
*
|
|
84
|
+
* Strategy: open the dropdown, then press ArrowDown/ArrowUp to reach
|
|
85
|
+
* the desired option, then press Enter to select it.
|
|
86
|
+
*
|
|
87
|
+
* For simplicity, we use a hybrid: the select is focused via Tab,
|
|
88
|
+
* then we use Playwright's selectOption which works via the browser
|
|
89
|
+
* API. This is a pragmatic choice — real keyboard users interact
|
|
90
|
+
* with selects differently across browsers.
|
|
91
|
+
*/
|
|
92
|
+
export async function keyboardSelectOption(page, target, value) {
|
|
93
|
+
// The element is already focused via Tab. Use selectOption which
|
|
94
|
+
// works via the browser's native select API. This is consistent
|
|
95
|
+
// across browsers and matches what keyboard users experience when
|
|
96
|
+
// interacting with native selects (which vary by platform).
|
|
97
|
+
await target.selectOption(value);
|
|
98
|
+
}
|
|
99
|
+
/** Global counter — alternates strategy on every fuzzy-finger interaction. */
|
|
100
|
+
let fuzzyFingerCounter = 0;
|
|
101
|
+
function nextStrategy() {
|
|
102
|
+
return fuzzyFingerCounter++ % 2 === 0 ? 'miss-center' : 'miss-edge';
|
|
103
|
+
}
|
|
104
|
+
// -- miss-center helpers ----------------------------------------------------
|
|
105
|
+
/**
|
|
106
|
+
* Distance from center for the miss-center strategy (px).
|
|
107
|
+
*
|
|
108
|
+
* WCAG 2.5.8 requires a minimum 24×24 CSS-px target size, so the
|
|
109
|
+
* center-to-edge distance is 12px. Clicking 15px from center will
|
|
110
|
+
* miss a compliant-minimum element, surfacing undersized targets.
|
|
111
|
+
*/
|
|
112
|
+
const CENTER_OFFSET_PX = 15;
|
|
113
|
+
/**
|
|
114
|
+
* Pick a random point that is CENTER_OFFSET_PX away from the
|
|
115
|
+
* element's center, in a random direction.
|
|
116
|
+
*/
|
|
117
|
+
function missCenterPoint(box) {
|
|
118
|
+
const cx = box.x + box.width / 2;
|
|
119
|
+
const cy = box.y + box.height / 2;
|
|
120
|
+
const angle = Math.random() * 2 * Math.PI;
|
|
121
|
+
return {
|
|
122
|
+
x: cx + CENTER_OFFSET_PX * Math.cos(angle),
|
|
123
|
+
y: cy + CENTER_OFFSET_PX * Math.sin(angle),
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
// -- miss-edge helpers ------------------------------------------------------
|
|
127
|
+
/**
|
|
128
|
+
* Overshoot distance beyond the element edge (px).
|
|
129
|
+
*
|
|
130
|
+
* We land 3px *outside* the bounding box. If the element meets the
|
|
131
|
+
* WCAG minimum (12px from center to edge), the mis-tap ends up ~15px
|
|
132
|
+
* from center — outside the target but close enough to hit a neighbor
|
|
133
|
+
* that is packed too tightly.
|
|
134
|
+
*/
|
|
135
|
+
const EDGE_OVERSHOOT_PX = 3;
|
|
136
|
+
/**
|
|
137
|
+
* Pick a random point just outside the element's bounding box.
|
|
138
|
+
*
|
|
139
|
+
* Strategy: pick a random edge (top / right / bottom / left),
|
|
140
|
+
* place the coordinate EDGE_OVERSHOOT_PX beyond that edge, and
|
|
141
|
+
* randomize position along the edge so we don't always hit the
|
|
142
|
+
* same neighbor.
|
|
143
|
+
*/
|
|
144
|
+
function missEdgePoint(box) {
|
|
145
|
+
const edge = Math.floor(Math.random() * 4); // 0=top, 1=right, 2=bottom, 3=left
|
|
146
|
+
const t = 0.2 + Math.random() * 0.6; // bias toward center of edge, not corners
|
|
147
|
+
switch (edge) {
|
|
148
|
+
case 0: // top — above the element
|
|
149
|
+
return { x: box.x + box.width * t, y: box.y - EDGE_OVERSHOOT_PX };
|
|
150
|
+
case 1: // right — past the right edge
|
|
151
|
+
return { x: box.x + box.width + EDGE_OVERSHOOT_PX, y: box.y + box.height * t };
|
|
152
|
+
case 2: // bottom — below the element
|
|
153
|
+
return { x: box.x + box.width * t, y: box.y + box.height + EDGE_OVERSHOOT_PX };
|
|
154
|
+
case 3: // left — past the left edge
|
|
155
|
+
default:
|
|
156
|
+
return { x: box.x - EDGE_OVERSHOOT_PX, y: box.y + box.height * t };
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// -- shared helpers ---------------------------------------------------------
|
|
160
|
+
/**
|
|
161
|
+
* Probability of a mis-click on any given interaction.
|
|
162
|
+
* ~20% (1 in 5) — most clicks go through cleanly, but every now and
|
|
163
|
+
* then one goes slightly astray.
|
|
164
|
+
*/
|
|
165
|
+
const MISS_PROBABILITY = 0.2;
|
|
166
|
+
/**
|
|
167
|
+
* Returns true if this interaction should be a mis-click.
|
|
168
|
+
*/
|
|
169
|
+
function shouldMiss() {
|
|
170
|
+
return Math.random() < MISS_PROBABILITY;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Pause duration (ms) after a mis-click before the correction.
|
|
174
|
+
* Short pause — human noticing the miss and re-tapping.
|
|
175
|
+
*/
|
|
176
|
+
const FUZZY_PAUSE_MS = 100;
|
|
177
|
+
// -- diagnostic error -------------------------------------------------------
|
|
178
|
+
/**
|
|
179
|
+
* Thrown when a fuzzy-finger mis-click caused the target element to
|
|
180
|
+
* vanish (because the mis-click activated a neighboring element that
|
|
181
|
+
* navigated away or altered the DOM).
|
|
182
|
+
*
|
|
183
|
+
* This is a real UX problem: touch targets are too close together.
|
|
184
|
+
* The `strategy` field tells you which test surfaced the issue:
|
|
185
|
+
* - `'miss-center'` → element is undersized (WCAG 2.5.8)
|
|
186
|
+
* - `'miss-edge'` → element is too close to a neighbor
|
|
187
|
+
*/
|
|
188
|
+
export class FuzzyFingerError extends Error {
|
|
189
|
+
strategy;
|
|
190
|
+
selector;
|
|
191
|
+
originalError;
|
|
192
|
+
constructor(strategy, selector, originalError) {
|
|
193
|
+
const reason = strategy === 'miss-center'
|
|
194
|
+
? `target too small (mis-click ${CENTER_OFFSET_PX}px from center hit something else — WCAG 2.5.8 requires minimum 24×24 CSS-px)`
|
|
195
|
+
: `target too close to neighbor (mis-click ${EDGE_OVERSHOOT_PX}px outside edge activated adjacent element)`;
|
|
196
|
+
super(`Fuzzy-finger failure on "${selector}": ${reason}`);
|
|
197
|
+
this.name = 'FuzzyFingerError';
|
|
198
|
+
this.strategy = strategy;
|
|
199
|
+
this.selector = selector;
|
|
200
|
+
this.originalError = originalError;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
// -- exported fuzzy-finger actions ------------------------------------------
|
|
204
|
+
/**
|
|
205
|
+
* Fuzzy-finger click: miss → pause → correct click.
|
|
206
|
+
*
|
|
207
|
+
* Simulates imprecise human touch input. The mis-click lands either
|
|
208
|
+
* 15px from center (testing target size) or just outside the bounding
|
|
209
|
+
* box (testing target spacing), alternating between strategies.
|
|
210
|
+
*
|
|
211
|
+
* After the mis-click, pauses ~1s (like a human noticing the miss),
|
|
212
|
+
* then clicks the correct element. If the correct click succeeds,
|
|
213
|
+
* we move on silently — humans miss all the time, no big deal.
|
|
214
|
+
*
|
|
215
|
+
* If the correct click *fails* (element vanished because the mis-click
|
|
216
|
+
* activated a neighbor), we throw FuzzyFingerError — that's a real
|
|
217
|
+
* touch-target problem in the UI.
|
|
218
|
+
*/
|
|
219
|
+
export async function fuzzyFingerClick(page, target, timeout, selector = '(scope)') {
|
|
220
|
+
await target.waitFor({ state: 'visible', timeout });
|
|
221
|
+
// ~1 in 5 clicks will miss — most go through cleanly
|
|
222
|
+
if (shouldMiss()) {
|
|
223
|
+
const strategy = nextStrategy();
|
|
224
|
+
const box = await target.boundingBox({ timeout });
|
|
225
|
+
if (box) {
|
|
226
|
+
// Step 1: Miss click
|
|
227
|
+
const missPoint = strategy === 'miss-center' ? missCenterPoint(box) : missEdgePoint(box);
|
|
228
|
+
await page.mouse.click(missPoint.x, missPoint.y);
|
|
229
|
+
// Step 2: Pause (human noticing the miss)
|
|
230
|
+
await new Promise(resolve => setTimeout(resolve, FUZZY_PAUSE_MS));
|
|
231
|
+
}
|
|
232
|
+
// Step 3: Correct click — this is where we detect problems
|
|
233
|
+
try {
|
|
234
|
+
await target.click({ timeout });
|
|
235
|
+
}
|
|
236
|
+
catch (err) {
|
|
237
|
+
// The correct click failed. Did the element vanish because our
|
|
238
|
+
// mis-click activated something else?
|
|
239
|
+
const stillExists = await target.count() > 0;
|
|
240
|
+
if (!stillExists) {
|
|
241
|
+
// Element is gone — the mis-click caused navigation or DOM change
|
|
242
|
+
throw new FuzzyFingerError(strategy, selector, err instanceof Error ? err : new Error(String(err)));
|
|
243
|
+
}
|
|
244
|
+
// Element still exists but click failed for another reason — real bug
|
|
245
|
+
throw err;
|
|
246
|
+
}
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
// Normal click (no mis-click this time)
|
|
250
|
+
await target.click({ timeout });
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Fuzzy-finger fill: miss → pause → correct click → fill.
|
|
254
|
+
*/
|
|
255
|
+
export async function fuzzyFingerFill(page, target, value, timeout, selector = '(scope)') {
|
|
256
|
+
await target.waitFor({ state: 'visible', timeout });
|
|
257
|
+
if (shouldMiss()) {
|
|
258
|
+
const strategy = nextStrategy();
|
|
259
|
+
const box = await target.boundingBox({ timeout });
|
|
260
|
+
if (box) {
|
|
261
|
+
const missPoint = strategy === 'miss-center' ? missCenterPoint(box) : missEdgePoint(box);
|
|
262
|
+
await page.mouse.click(missPoint.x, missPoint.y);
|
|
263
|
+
await new Promise(resolve => setTimeout(resolve, FUZZY_PAUSE_MS));
|
|
264
|
+
}
|
|
265
|
+
try {
|
|
266
|
+
await target.fill(value, { timeout });
|
|
267
|
+
}
|
|
268
|
+
catch (err) {
|
|
269
|
+
const stillExists = await target.count() > 0;
|
|
270
|
+
if (!stillExists) {
|
|
271
|
+
throw new FuzzyFingerError(strategy, selector, err instanceof Error ? err : new Error(String(err)));
|
|
272
|
+
}
|
|
273
|
+
throw err;
|
|
274
|
+
}
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
await target.fill(value, { timeout });
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Fuzzy-finger check: miss → pause → correct check.
|
|
281
|
+
*/
|
|
282
|
+
export async function fuzzyFingerCheck(page, target, timeout, selector = '(scope)') {
|
|
283
|
+
await target.waitFor({ state: 'visible', timeout });
|
|
284
|
+
if (shouldMiss()) {
|
|
285
|
+
const strategy = nextStrategy();
|
|
286
|
+
const box = await target.boundingBox({ timeout });
|
|
287
|
+
if (box) {
|
|
288
|
+
const missPoint = strategy === 'miss-center' ? missCenterPoint(box) : missEdgePoint(box);
|
|
289
|
+
await page.mouse.click(missPoint.x, missPoint.y);
|
|
290
|
+
await new Promise(resolve => setTimeout(resolve, FUZZY_PAUSE_MS));
|
|
291
|
+
}
|
|
292
|
+
try {
|
|
293
|
+
await target.check({ timeout });
|
|
294
|
+
}
|
|
295
|
+
catch (err) {
|
|
296
|
+
const stillExists = await target.count() > 0;
|
|
297
|
+
if (!stillExists) {
|
|
298
|
+
throw new FuzzyFingerError(strategy, selector, err instanceof Error ? err : new Error(String(err)));
|
|
299
|
+
}
|
|
300
|
+
throw err;
|
|
301
|
+
}
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
await target.check({ timeout });
|
|
305
|
+
}
|
|
306
|
+
// ---------------------------------------------------------------------------
|
|
307
|
+
// NavigationModeRotation
|
|
308
|
+
// ---------------------------------------------------------------------------
|
|
309
|
+
/**
|
|
310
|
+
* Assigns navigation modes to actors via round-robin rotation.
|
|
311
|
+
*
|
|
312
|
+
* The default pool alternates: pointer, keyboard.
|
|
313
|
+
* Fuzzy-finger behavior is controlled separately and applies to
|
|
314
|
+
* pointer-mode actors.
|
|
315
|
+
*
|
|
316
|
+
* @example
|
|
317
|
+
* ```ts
|
|
318
|
+
* const rotation = new NavigationModeRotation()
|
|
319
|
+
* rotation.next() // 'pointer'
|
|
320
|
+
* rotation.next() // 'keyboard'
|
|
321
|
+
* rotation.next() // 'pointer'
|
|
322
|
+
* ```
|
|
323
|
+
*
|
|
324
|
+
* @example Keyboard only disabled
|
|
325
|
+
* ```ts
|
|
326
|
+
* const rotation = new NavigationModeRotation(['pointer'])
|
|
327
|
+
* rotation.next() // 'pointer'
|
|
328
|
+
* rotation.next() // 'pointer'
|
|
329
|
+
* ```
|
|
330
|
+
*/
|
|
331
|
+
export class NavigationModeRotation {
|
|
332
|
+
pool;
|
|
333
|
+
index = 0;
|
|
334
|
+
constructor(modes) {
|
|
335
|
+
this.pool = modes && modes.length > 0 ? modes : ['pointer', 'keyboard'];
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Get the next navigation mode in rotation.
|
|
339
|
+
*/
|
|
340
|
+
next() {
|
|
341
|
+
const mode = this.pool[this.index % this.pool.length];
|
|
342
|
+
this.index++;
|
|
343
|
+
return mode;
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Peek at the next mode without advancing.
|
|
347
|
+
*/
|
|
348
|
+
peek() {
|
|
349
|
+
return this.pool[this.index % this.pool.length];
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Reset rotation to the beginning.
|
|
353
|
+
*/
|
|
354
|
+
reset() {
|
|
355
|
+
this.index = 0;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Current rotation index (for reporting).
|
|
359
|
+
*/
|
|
360
|
+
get currentIndex() {
|
|
361
|
+
return this.index;
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* The full mode pool.
|
|
365
|
+
*/
|
|
366
|
+
get modes() {
|
|
367
|
+
return this.pool;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
//# sourceMappingURL=keyboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"AA2BA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAU,EACV,MAAe,EACf,OAA4B,EAAE;IAE9B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,GAAG,CAAA;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,KAAK,CAAA;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAA;IAErC,+DAA+D;IAC/D,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IACrF,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,sDAAsD,CACvD,CAAA;IACH,CAAC;IAED,+CAA+C;IAC/C,IAAI,YAAY,GAAY,IAAI,CAAA;IAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,wCAAwC,OAAO,6BAA6B,CAC7E,CAAA;QACH,CAAC;QAED,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAEhC,wDAAwD;QACxD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE;YAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAA;YACrC,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,QAAQ,CAAC,IAAI;gBAAE,OAAO,QAAQ,CAAA;YACxD,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,OAAO,OAAO,CAAA;YACxD,qDAAqD;YACrD,OAAO,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,EAAE,CAAA;QACnC,CAAC,CAAC,CAAA;QAEF,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,OAAM,CAAC,iCAAiC;QAC1C,CAAC;QAED,kDAAkD;QAClD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACZ,YAAY,GAAG,MAAM,CAAA;QACvB,CAAC;aAAM,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CACb,6EAA6E;gBAC7E,kEAAkE;gBAClE,iFAAiF,CAClF,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,8DAA8D,OAAO,gBAAgB;QACrF,sEAAsE;QACtE,2EAA2E,CAC5E,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAU;IACzC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAU;IACzC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAU,EAAE,KAAa;IAC1D,4CAA4C;IAC5C,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IACtC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IACtC,4CAA4C;IAC5C,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACjC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAU,EACV,MAAe,EACf,KAAa;IAEb,iEAAiE;IACjE,gEAAgE;IAChE,kEAAkE;IAClE,4DAA4D;IAC5D,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;AAClC,CAAC;AAsBD,8EAA8E;AAC9E,IAAI,kBAAkB,GAAG,CAAC,CAAA;AAE1B,SAAS,YAAY;IACnB,OAAO,kBAAkB,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAA;AACrE,CAAC;AAED,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAE3B;;;GAGG;AACH,SAAS,eAAe,CAAC,GAA4D;IACnF,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAA;IAChC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAA;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAA;IACzC,OAAO;QACL,CAAC,EAAE,EAAE,GAAG,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1C,CAAC,EAAE,EAAE,GAAG,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;KAC3C,CAAA;AACH,CAAC;AAED,8EAA8E;AAE9E;;;;;;;GAOG;AACH,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAE3B;;;;;;;GAOG;AACH,SAAS,aAAa,CAAC,GAA4D;IACjF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA,CAAC,mCAAmC;IAC9E,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAA,CAAC,0CAA0C;IAE9E,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,CAAC,EAAE,0BAA0B;YAChC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,iBAAiB,EAAE,CAAA;QACnE,KAAK,CAAC,EAAE,8BAA8B;YACpC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,iBAAiB,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAA;QAChF,KAAK,CAAC,EAAE,6BAA6B;YACnC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAA;QAChF,KAAK,CAAC,CAAC,CAAC,4BAA4B;QACpC;YACE,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,iBAAiB,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAA;IACtE,CAAC;AACH,CAAC;AAED,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,GAAG,CAAA;AAE5B;;GAEG;AACH,SAAS,UAAU;IACjB,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,gBAAgB,CAAA;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,cAAc,GAAG,GAAG,CAAA;AAE1B,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAChC,QAAQ,CAAqB;IAC7B,QAAQ,CAAQ;IAChB,aAAa,CAAO;IAE7B,YAAY,QAA6B,EAAE,QAAgB,EAAE,aAAoB;QAC/E,MAAM,MAAM,GAAG,QAAQ,KAAK,aAAa;YACvC,CAAC,CAAC,+BAA+B,gBAAgB,+EAA+E;YAChI,CAAC,CAAC,2CAA2C,iBAAiB,6CAA6C,CAAA;QAC7G,KAAK,CAAC,4BAA4B,QAAQ,MAAM,MAAM,EAAE,CAAC,CAAA;QACzD,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAA;QAC9B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;IACpC,CAAC;CACF;AAED,8EAA8E;AAE9E;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAU,EACV,MAAe,EACf,OAAe,EACf,QAAQ,GAAG,SAAS;IAEpB,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAA;IAEnD,qDAAqD;IACrD,IAAI,UAAU,EAAE,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAA;QAC/B,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;QAEjD,IAAI,GAAG,EAAE,CAAC;YACR,qBAAqB;YACrB,MAAM,SAAS,GAAG,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;YACxF,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;YAEhD,0CAA0C;YAC1C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAA;QACnE,CAAC;QAED,2DAA2D;QAC3D,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;QACjC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,+DAA+D;YAC/D,sCAAsC;YACtC,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;YAC5C,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,kEAAkE;gBAClE,MAAM,IAAI,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACrG,CAAC;YACD,sEAAsE;YACtE,MAAM,GAAG,CAAA;QACX,CAAC;QACD,OAAM;IACR,CAAC;IAED,wCAAwC;IACxC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAU,EACV,MAAe,EACf,KAAa,EACb,OAAe,EACf,QAAQ,GAAG,SAAS;IAEpB,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAA;IAEnD,IAAI,UAAU,EAAE,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAA;QAC/B,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;QAEjD,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,SAAS,GAAG,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;YACxF,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;YAChD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAA;QACnE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;YAC5C,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACrG,CAAC;YACD,MAAM,GAAG,CAAA;QACX,CAAC;QACD,OAAM;IACR,CAAC;IAED,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAU,EACV,MAAe,EACf,OAAe,EACf,QAAQ,GAAG,SAAS;IAEpB,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAA;IAEnD,IAAI,UAAU,EAAE,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAA;QAC/B,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;QAEjD,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,SAAS,GAAG,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;YACxF,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;YAChD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAA;QACnE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;QACjC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;YAC5C,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACrG,CAAC;YACD,MAAM,GAAG,CAAA;QACX,CAAC;QACD,OAAM;IACR,CAAC;IAED,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;AACjC,CAAC;AAED,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,sBAAsB;IACzB,IAAI,CAAkB;IACtB,KAAK,GAAG,CAAC,CAAA;IAEjB,YAAY,KAAwB;QAClC,IAAI,CAAC,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IACzE,CAAC;IAED;;OAEG;IACH,IAAI;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACrD,IAAI,CAAC,KAAK,EAAE,CAAA;QACZ,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACjD,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;IAChB,CAAC;IAED;;OAEG;IACH,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;CACF"}
|
package/dist/reactive.d.ts
CHANGED
|
@@ -46,7 +46,8 @@
|
|
|
46
46
|
* ```
|
|
47
47
|
*/
|
|
48
48
|
import type { Page } from 'playwright';
|
|
49
|
-
import type { ActorConfig, Selector, TimelineEntry, ScriptWarning, FlowFn, SceneOptions, ConcurrentActorHandle } from './types.js';
|
|
49
|
+
import type { ActorConfig, Selector, TimelineEntry, ScriptWarning, FlowFn, SceneOptions, ConcurrentActorHandle, PageFactory } from './types.js';
|
|
50
|
+
import type { NavigationMode } from './keyboard.js';
|
|
50
51
|
import { MessageBus } from './message-bus.js';
|
|
51
52
|
/**
|
|
52
53
|
* Concurrent actor handle implementation (declarative / flow model).
|
|
@@ -66,6 +67,8 @@ export declare class ConcurrentActorHandleImpl implements ConcurrentActorHandle
|
|
|
66
67
|
readonly username?: string;
|
|
67
68
|
readonly email?: string;
|
|
68
69
|
readonly password?: string;
|
|
70
|
+
readonly navigationMode: NavigationMode;
|
|
71
|
+
readonly fuzzyFingers: boolean;
|
|
69
72
|
[key: string]: unknown;
|
|
70
73
|
private _page;
|
|
71
74
|
private queue;
|
|
@@ -75,6 +78,7 @@ export declare class ConcurrentActorHandleImpl implements ConcurrentActorHandle
|
|
|
75
78
|
private conditionalMonitors;
|
|
76
79
|
private scopeSetUrl;
|
|
77
80
|
private scopeStackUrls;
|
|
81
|
+
private _pageFactory;
|
|
78
82
|
private _draining;
|
|
79
83
|
private _aborted;
|
|
80
84
|
private _abortReason?;
|
|
@@ -82,7 +86,7 @@ export declare class ConcurrentActorHandleImpl implements ConcurrentActorHandle
|
|
|
82
86
|
private _actorRegistry;
|
|
83
87
|
/** Team metadata for [team.field] interpolation */
|
|
84
88
|
private _teamMetadata;
|
|
85
|
-
constructor(role: string, config: ActorConfig, page: Page | null, bus: MessageBus, timeline: TimelineEntry[], warnings: ScriptWarning[], actionTimeout: number, warnAfter: number);
|
|
89
|
+
constructor(role: string, config: ActorConfig, page: Page | null, bus: MessageBus, timeline: TimelineEntry[], warnings: ScriptWarning[], actionTimeout: number, warnAfter: number, navigationMode?: NavigationMode, fuzzyFingers?: boolean);
|
|
86
90
|
/**
|
|
87
91
|
* Playwright page for this actor.
|
|
88
92
|
* Available after page initialization (before drain).
|
|
@@ -102,6 +106,20 @@ export declare class ConcurrentActorHandleImpl implements ConcurrentActorHandle
|
|
|
102
106
|
* Set team metadata for [team.field] interpolation.
|
|
103
107
|
*/
|
|
104
108
|
_setTeamMetadata(metadata: Record<string, string>): void;
|
|
109
|
+
/**
|
|
110
|
+
* Set the page factory for switchDevice support.
|
|
111
|
+
* Called by the flow runner after page initialization.
|
|
112
|
+
*/
|
|
113
|
+
_setPageFactory(factory: PageFactory): void;
|
|
114
|
+
/**
|
|
115
|
+
* Whether this actor uses keyboard navigation.
|
|
116
|
+
*/
|
|
117
|
+
private get isKeyboard();
|
|
118
|
+
/**
|
|
119
|
+
* Whether fuzzy-finger touch behavior is enabled for pointer mode.
|
|
120
|
+
* Fuzzy-finger simulates imprecise human touch: miss → pause → correct click.
|
|
121
|
+
*/
|
|
122
|
+
private get useFuzzyFingers();
|
|
105
123
|
private push;
|
|
106
124
|
/** Number of queued actions */
|
|
107
125
|
get pending(): number;
|
|
@@ -118,6 +136,10 @@ export declare class ConcurrentActorHandleImpl implements ConcurrentActorHandle
|
|
|
118
136
|
*/
|
|
119
137
|
private validateScope;
|
|
120
138
|
openTo(url: string): this;
|
|
139
|
+
reload(): this;
|
|
140
|
+
goBack(): this;
|
|
141
|
+
goForward(): this;
|
|
142
|
+
switchDevice(device?: string): this;
|
|
121
143
|
scrollToBottom(): this;
|
|
122
144
|
see(selector: Selector): this;
|
|
123
145
|
seeInView(selector: Selector): this;
|
package/dist/reactive.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactive.d.ts","sourceRoot":"","sources":["../src/reactive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAW,MAAM,YAAY,CAAA;AAC/C,OAAO,KAAK,EACV,WAAW,EACX,QAAQ,EACR,aAAa,EACb,aAAa,EAEb,MAAM,EACN,YAAY,EACZ,qBAAqB,
|
|
1
|
+
{"version":3,"file":"reactive.d.ts","sourceRoot":"","sources":["../src/reactive.ts"],"names":[],"mappings":"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"}
|