@mobileai/react-native 0.3.0 → 0.4.1
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/README.md
CHANGED
|
@@ -16,7 +16,10 @@ Wrap your navigation with `<AIAgent>`. The AI automatically understands your ent
|
|
|
16
16
|
|
|
17
17
|
## ✨ Features
|
|
18
18
|
|
|
19
|
-
- 🤖 **Zero-config UI understanding** — No
|
|
19
|
+
- 🤖 **Zero-config UI understanding** — No annotations, no accessibility labels. The AI reads your entire React Fiber tree automatically.
|
|
20
|
+
- 🎯 **Universal component support** — Works with every React Native component (Pressable, Switch, TextInput, custom components) without modification.
|
|
21
|
+
- 🖼️ **Media inference** — Detects images and videos on screen, captures their URIs, and infers context from parent component names — enabling Gemini's vision capabilities.
|
|
22
|
+
- 📐 **Compact DOM output** — Collapses structural view nesting into flat, token-efficient output. Your 50-level deep navigation bar becomes a single line.
|
|
20
23
|
- 🧭 **Auto-navigation** — Navigates between screens to complete multi-step tasks.
|
|
21
24
|
- 🔒 **Production-grade security** — Element gating, content masking, lifecycle hooks, human-in-the-loop confirmation.
|
|
22
25
|
- 🧩 **Custom actions** — Expose any business logic (checkout, API calls) as AI-callable tools with `useAction`.
|
|
@@ -55,6 +58,33 @@ export default function App() {
|
|
|
55
58
|
|
|
56
59
|
A floating chat bar appears automatically. Ask the AI to navigate, tap buttons, fill forms — it reads your live UI and acts.
|
|
57
60
|
|
|
61
|
+
## 🧠 How It Works
|
|
62
|
+
|
|
63
|
+
The SDK traverses your **React Fiber tree** at runtime and generates a compact, LLM-friendly representation of everything on screen:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
Account Settings
|
|
67
|
+
[image in="SettingsScreen" src="https://randomuser.me/api/portraits/men/32.jpg"]
|
|
68
|
+
Demo User
|
|
69
|
+
demo@test.com
|
|
70
|
+
Profile Information
|
|
71
|
+
Full Name
|
|
72
|
+
[0]<text-input>Enter your name />
|
|
73
|
+
Email Address
|
|
74
|
+
[1]<text-input>Enter your email />
|
|
75
|
+
Notifications
|
|
76
|
+
Email Alerts
|
|
77
|
+
[2]<switch value="true"> />
|
|
78
|
+
Push Notifications
|
|
79
|
+
[3]<switch value="false"> />
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Key design decisions:**
|
|
83
|
+
- **Structural views are transparent** — React Navigation's 50+ nested `<View>` layers are collapsed. Only interactive elements and text content appear.
|
|
84
|
+
- **Media is context-aware** — Images emit `[image in="ComponentName" src="url"]`, giving the LLM both *where* the image is and the full URL for Gemini's vision model.
|
|
85
|
+
- **State is explicit** — Switch values, check states, and input values are emitted as attributes so the LLM knows the current state.
|
|
86
|
+
- **Polymorphic tap** — `tap(index)` works on any component: calls `onPress` for buttons, `onValueChange` for switches, and bubbles up the Fiber tree for custom wrapper components.
|
|
87
|
+
|
|
58
88
|
## 🔌 API Reference
|
|
59
89
|
|
|
60
90
|
### `<AIAgent>` Component
|
|
@@ -244,10 +274,10 @@ This starts two servers:
|
|
|
244
274
|
|
|
245
275
|
| Tool | Description |
|
|
246
276
|
|------|-------------|
|
|
247
|
-
| `tap(index)` | Tap
|
|
248
|
-
| `type(index, text)` | Type text into
|
|
277
|
+
| `tap(index)` | Tap any interactive element. Polymorphic: triggers `onPress` for buttons, `onValueChange` for switches, bubbles up Fiber tree for wrapper components. |
|
|
278
|
+
| `type(index, text)` | Type text into a text-input. |
|
|
249
279
|
| `navigate(screen)` | Navigate to a screen. |
|
|
250
|
-
| `done(text)` | Complete the task. |
|
|
280
|
+
| `done(text)` | Complete the task with a response. |
|
|
251
281
|
| `ask_user(question)` | Ask the user for clarification. |
|
|
252
282
|
|
|
253
283
|
## 📋 Requirements
|
|
@@ -21,7 +21,13 @@ const PRESSABLE_TYPES = new Set(['Pressable', 'TouchableOpacity', 'TouchableHigh
|
|
|
21
21
|
const TEXT_INPUT_TYPES = new Set(['TextInput', 'RCTSinglelineTextInputView', 'RCTMultilineTextInputView']);
|
|
22
22
|
const SWITCH_TYPES = new Set(['Switch', 'RCTSwitch']);
|
|
23
23
|
const TEXT_TYPES = new Set(['Text', 'RCTText']);
|
|
24
|
-
|
|
24
|
+
|
|
25
|
+
// Media component types for Component-Context Media Inference
|
|
26
|
+
const IMAGE_TYPES = new Set(['Image', 'RCTImageView', 'ExpoImage', 'FastImage', 'CachedImage']);
|
|
27
|
+
const VIDEO_TYPES = new Set(['Video', 'ExpoVideo', 'RCTVideo', 'VideoPlayer', 'VideoView']);
|
|
28
|
+
|
|
29
|
+
// Known RN internal component names to skip when walking up for context
|
|
30
|
+
const RN_INTERNAL_NAMES = new Set(['View', 'RCTView', 'Pressable', 'TouchableOpacity', 'TouchableHighlight', 'ScrollView', 'RCTScrollView', 'FlatList', 'SectionList', 'SafeAreaView', 'RNCSafeAreaView', 'KeyboardAvoidingView', 'Modal', 'StatusBar', 'Text', 'RCTText', 'AnimatedComponent', 'AnimatedComponentWrapper', 'Animated']);
|
|
25
31
|
|
|
26
32
|
// ─── State Extraction (mirrors page-agent DEFAULT_INCLUDE_ATTRIBUTES) ──
|
|
27
33
|
|
|
@@ -71,6 +77,25 @@ export function hasAnyEventHandler(props) {
|
|
|
71
77
|
return false;
|
|
72
78
|
}
|
|
73
79
|
|
|
80
|
+
/**
|
|
81
|
+
* Walk UP the Fiber tree to find the nearest custom (user-defined) component name.
|
|
82
|
+
* Skips known React Native internal component names.
|
|
83
|
+
* This provides semantic context for media elements (e.g., an Image inside "ProfileHeader").
|
|
84
|
+
*/
|
|
85
|
+
function getNearestCustomComponentName(fiber, maxDepth = 8) {
|
|
86
|
+
let current = fiber?.return;
|
|
87
|
+
let depth = 0;
|
|
88
|
+
while (current && depth < maxDepth) {
|
|
89
|
+
const name = getComponentName(current);
|
|
90
|
+
if (name && !RN_INTERNAL_NAMES.has(name) && !PRESSABLE_TYPES.has(name)) {
|
|
91
|
+
return name;
|
|
92
|
+
}
|
|
93
|
+
current = current.return;
|
|
94
|
+
depth++;
|
|
95
|
+
}
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
|
|
74
99
|
// ─── Fiber Node Helpers ────────────────────────────────────────
|
|
75
100
|
|
|
76
101
|
/**
|
|
@@ -336,23 +361,44 @@ export function walkFiberTree(rootRef, config) {
|
|
|
336
361
|
return elementOutput;
|
|
337
362
|
}
|
|
338
363
|
|
|
339
|
-
// Non-interactive structural nodes
|
|
364
|
+
// Non-interactive structural nodes — collapse view chains to reduce noise
|
|
365
|
+
// Only emit text content; structural <view> wrappers are transparent
|
|
340
366
|
const typeStr = node.type && typeof node.type === 'string' ? node.type : node.elementType && typeof node.elementType === 'string' ? node.elementType : null;
|
|
341
367
|
if (typeStr === 'RCTText' || typeStr === 'Text') {
|
|
342
368
|
const textContent = extractRawText(props.children);
|
|
343
369
|
if (textContent && textContent.trim() !== '') {
|
|
344
|
-
return `${indent}
|
|
370
|
+
return `${indent}${textContent.trim()}\n`;
|
|
345
371
|
}
|
|
346
372
|
}
|
|
347
|
-
|
|
348
|
-
|
|
373
|
+
|
|
374
|
+
// ── Media Detection: Component-Context Media Inference ──
|
|
375
|
+
const componentName = getComponentName(node);
|
|
376
|
+
if (componentName && IMAGE_TYPES.has(componentName)) {
|
|
377
|
+
const context = getNearestCustomComponentName(node);
|
|
378
|
+
const alt = props.alt || props.accessibilityLabel || '';
|
|
379
|
+
// Emit the full URI so Gemini can use vision to analyze the image
|
|
380
|
+
const src = typeof props.source === 'object' && props.source?.uri ? props.source.uri : '';
|
|
381
|
+
const attrs = [context ? `in="${context}"` : '', alt ? `alt="${alt}"` : '', src ? `src="${src}"` : ''].filter(Boolean).join(' ');
|
|
382
|
+
return `${indent}[image${attrs ? ' ' + attrs : ''}]\n`;
|
|
383
|
+
}
|
|
384
|
+
if (componentName && VIDEO_TYPES.has(componentName)) {
|
|
385
|
+
const context = getNearestCustomComponentName(node);
|
|
386
|
+
const paused = props.paused !== undefined ? props.paused : props.shouldPlay !== undefined ? !props.shouldPlay : null;
|
|
387
|
+
// Capture video source URI and poster image
|
|
388
|
+
const src = typeof props.source === 'object' && props.source?.uri ? props.source.uri : '';
|
|
389
|
+
const poster = props.posterSource?.uri || props.poster || '';
|
|
390
|
+
const attrs = [context ? `in="${context}"` : '', paused !== null ? `state="${paused ? 'paused' : 'playing'}"` : '', src ? `src="${src}"` : '', poster ? `poster="${poster}"` : ''].filter(Boolean).join(' ');
|
|
391
|
+
return `${indent}[video${attrs ? ' ' + attrs : ''}]\n`;
|
|
349
392
|
}
|
|
350
|
-
|
|
393
|
+
|
|
394
|
+
// Structural views: pass children through without adding <view> wrapper
|
|
395
|
+
// This collapses the 50+ nesting levels into flat, readable output
|
|
396
|
+
return childrenText;
|
|
351
397
|
}
|
|
352
398
|
let elementsText = processNode(fiber, 0);
|
|
353
399
|
|
|
354
|
-
// Clean up
|
|
355
|
-
elementsText = elementsText.replace(
|
|
400
|
+
// Clean up excessive blank lines
|
|
401
|
+
elementsText = elementsText.replace(/\n{3,}/g, '\n\n');
|
|
356
402
|
logger.info('FiberTreeWalker', `Found ${interactives.length} interactive elements`);
|
|
357
403
|
return {
|
|
358
404
|
elementsText: elementsText.trim(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["logger","PRESSABLE_TYPES","Set","TEXT_INPUT_TYPES","SWITCH_TYPES","TEXT_TYPES","STATE_PROPS","extractStateAttributes","props","parts","accessibilityState","k","v","Object","entries","undefined","push","accessibilityRole","key","join","hasAnyEventHandler","keys","startsWith","getComponentName","fiber","type","displayName","name","render","getElementType","memoizedProps","has","role","onPress","onChangeText","onValueChange","isDisabled","disabled","editable","extractTextContent","maxDepth","child","childName","childProps","sibling","text","extractRawText","children","nestedText","trim","String","Array","isArray","map","filter","Boolean","getFiberRoot","hook","globalThis","__REACT_DEVTOOLS_GLOBAL_HOOK__","renderers","size","rendererId","roots","getFiberRoots","fiberRoot","values","next","value","current","debug","e","getFiberFromRef","ref","rootFiber","_reactInternals","_reactInternalInstance","fiberKey","find","warn","matchesRefList","node","refs","length","stateNode","walkFiberTree","rootRef","config","elementsText","interactives","currentIndex","hasWhitelist","interactiveWhitelist","processNode","depth","isInsideInteractive","aiIgnore","interactiveBlacklist","childText","currentChild","isWhitelisted","elementType","shouldInclude","childrenText","indent","repeat","resolvedType","label","accessibilityLabel","placeholder","index","fiberNode","stateAttrs","attrStr","textContent","elementOutput","typeStr","replace","info"],"sourceRoot":"../../../src","sources":["core/FiberTreeWalker.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["logger","PRESSABLE_TYPES","Set","TEXT_INPUT_TYPES","SWITCH_TYPES","TEXT_TYPES","IMAGE_TYPES","VIDEO_TYPES","RN_INTERNAL_NAMES","STATE_PROPS","extractStateAttributes","props","parts","accessibilityState","k","v","Object","entries","undefined","push","accessibilityRole","key","join","hasAnyEventHandler","keys","startsWith","getNearestCustomComponentName","fiber","maxDepth","current","return","depth","name","getComponentName","has","type","displayName","render","getElementType","memoizedProps","role","onPress","onChangeText","onValueChange","isDisabled","disabled","editable","extractTextContent","child","childName","childProps","sibling","text","extractRawText","children","nestedText","trim","String","Array","isArray","map","filter","Boolean","getFiberRoot","hook","globalThis","__REACT_DEVTOOLS_GLOBAL_HOOK__","renderers","size","rendererId","roots","getFiberRoots","fiberRoot","values","next","value","debug","e","getFiberFromRef","ref","rootFiber","_reactInternals","_reactInternalInstance","fiberKey","find","warn","matchesRefList","node","refs","length","stateNode","walkFiberTree","rootRef","config","elementsText","interactives","currentIndex","hasWhitelist","interactiveWhitelist","processNode","isInsideInteractive","aiIgnore","interactiveBlacklist","childText","currentChild","isWhitelisted","elementType","shouldInclude","childrenText","indent","repeat","resolvedType","label","accessibilityLabel","placeholder","index","fiberNode","stateAttrs","attrStr","textContent","elementOutput","typeStr","componentName","context","alt","src","source","uri","attrs","paused","shouldPlay","poster","posterSource","replace","info"],"sourceRoot":"../../../src","sources":["core/FiberTreeWalker.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FiberTreeWalker.d.ts","sourceRoot":"","sources":["../../../../src/core/FiberTreeWalker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,SAAS,CAAC;AAI/D,MAAM,WAAW,UAAU;IACzB,kFAAkF;IAClF,oBAAoB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9C,4FAA4F;IAC5F,oBAAoB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;CAC/C;
|
|
1
|
+
{"version":3,"file":"FiberTreeWalker.d.ts","sourceRoot":"","sources":["../../../../src/core/FiberTreeWalker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,SAAS,CAAC;AAI/D,MAAM,WAAW,UAAU;IACzB,kFAAkF;IAClF,oBAAoB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9C,4FAA4F;IAC5F,oBAAoB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;CAC/C;AAsED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAQtD;AAyOD,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,kBAAkB,EAAE,CAAC;CACpC;AAID;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,CA6H3E"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mobileai/react-native",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Build autonomous AI agents for React Native and Expo apps. Provides AI-native UI traversal, tool calling, and structured reasoning.",
|
|
5
5
|
"main": "./lib/module/index.js",
|
|
6
6
|
"source": "./src/index.ts",
|
|
@@ -35,7 +35,23 @@ const PRESSABLE_TYPES = new Set([
|
|
|
35
35
|
const TEXT_INPUT_TYPES = new Set(['TextInput', 'RCTSinglelineTextInputView', 'RCTMultilineTextInputView']);
|
|
36
36
|
const SWITCH_TYPES = new Set(['Switch', 'RCTSwitch']);
|
|
37
37
|
const TEXT_TYPES = new Set(['Text', 'RCTText']);
|
|
38
|
-
|
|
38
|
+
|
|
39
|
+
// Media component types for Component-Context Media Inference
|
|
40
|
+
const IMAGE_TYPES = new Set([
|
|
41
|
+
'Image', 'RCTImageView', 'ExpoImage', 'FastImage', 'CachedImage',
|
|
42
|
+
]);
|
|
43
|
+
const VIDEO_TYPES = new Set([
|
|
44
|
+
'Video', 'ExpoVideo', 'RCTVideo', 'VideoPlayer', 'VideoView',
|
|
45
|
+
]);
|
|
46
|
+
|
|
47
|
+
// Known RN internal component names to skip when walking up for context
|
|
48
|
+
const RN_INTERNAL_NAMES = new Set([
|
|
49
|
+
'View', 'RCTView', 'Pressable', 'TouchableOpacity', 'TouchableHighlight',
|
|
50
|
+
'ScrollView', 'RCTScrollView', 'FlatList', 'SectionList',
|
|
51
|
+
'SafeAreaView', 'RNCSafeAreaView', 'KeyboardAvoidingView',
|
|
52
|
+
'Modal', 'StatusBar', 'Text', 'RCTText', 'AnimatedComponent',
|
|
53
|
+
'AnimatedComponentWrapper', 'Animated',
|
|
54
|
+
]);
|
|
39
55
|
|
|
40
56
|
// ─── State Extraction (mirrors page-agent DEFAULT_INCLUDE_ATTRIBUTES) ──
|
|
41
57
|
|
|
@@ -86,6 +102,25 @@ export function hasAnyEventHandler(props: any): boolean {
|
|
|
86
102
|
return false;
|
|
87
103
|
}
|
|
88
104
|
|
|
105
|
+
/**
|
|
106
|
+
* Walk UP the Fiber tree to find the nearest custom (user-defined) component name.
|
|
107
|
+
* Skips known React Native internal component names.
|
|
108
|
+
* This provides semantic context for media elements (e.g., an Image inside "ProfileHeader").
|
|
109
|
+
*/
|
|
110
|
+
function getNearestCustomComponentName(fiber: any, maxDepth: number = 8): string | null {
|
|
111
|
+
let current = fiber?.return;
|
|
112
|
+
let depth = 0;
|
|
113
|
+
while (current && depth < maxDepth) {
|
|
114
|
+
const name = getComponentName(current);
|
|
115
|
+
if (name && !RN_INTERNAL_NAMES.has(name) && !PRESSABLE_TYPES.has(name)) {
|
|
116
|
+
return name;
|
|
117
|
+
}
|
|
118
|
+
current = current.return;
|
|
119
|
+
depth++;
|
|
120
|
+
}
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
|
|
89
124
|
// ─── Fiber Node Helpers ────────────────────────────────────────
|
|
90
125
|
|
|
91
126
|
/**
|
|
@@ -376,28 +411,61 @@ export function walkFiberTree(rootRef: any, config?: WalkConfig): WalkResult {
|
|
|
376
411
|
return elementOutput;
|
|
377
412
|
}
|
|
378
413
|
|
|
379
|
-
// Non-interactive structural nodes
|
|
414
|
+
// Non-interactive structural nodes — collapse view chains to reduce noise
|
|
415
|
+
// Only emit text content; structural <view> wrappers are transparent
|
|
380
416
|
const typeStr = node.type && typeof node.type === 'string' ? node.type :
|
|
381
417
|
(node.elementType && typeof node.elementType === 'string' ? node.elementType : null);
|
|
382
418
|
|
|
383
419
|
if (typeStr === 'RCTText' || typeStr === 'Text') {
|
|
384
420
|
const textContent = extractRawText(props.children);
|
|
385
421
|
if (textContent && textContent.trim() !== '') {
|
|
386
|
-
return `${indent}
|
|
422
|
+
return `${indent}${textContent.trim()}\n`;
|
|
387
423
|
}
|
|
388
424
|
}
|
|
389
425
|
|
|
390
|
-
|
|
391
|
-
|
|
426
|
+
// ── Media Detection: Component-Context Media Inference ──
|
|
427
|
+
const componentName = getComponentName(node);
|
|
428
|
+
if (componentName && IMAGE_TYPES.has(componentName)) {
|
|
429
|
+
const context = getNearestCustomComponentName(node);
|
|
430
|
+
const alt = props.alt || props.accessibilityLabel || '';
|
|
431
|
+
// Emit the full URI so Gemini can use vision to analyze the image
|
|
432
|
+
const src = typeof props.source === 'object' && props.source?.uri
|
|
433
|
+
? props.source.uri
|
|
434
|
+
: '';
|
|
435
|
+
const attrs = [
|
|
436
|
+
context ? `in="${context}"` : '',
|
|
437
|
+
alt ? `alt="${alt}"` : '',
|
|
438
|
+
src ? `src="${src}"` : '',
|
|
439
|
+
].filter(Boolean).join(' ');
|
|
440
|
+
return `${indent}[image${attrs ? ' ' + attrs : ''}]\n`;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
if (componentName && VIDEO_TYPES.has(componentName)) {
|
|
444
|
+
const context = getNearestCustomComponentName(node);
|
|
445
|
+
const paused = props.paused !== undefined ? props.paused : props.shouldPlay !== undefined ? !props.shouldPlay : null;
|
|
446
|
+
// Capture video source URI and poster image
|
|
447
|
+
const src = typeof props.source === 'object' && props.source?.uri
|
|
448
|
+
? props.source.uri
|
|
449
|
+
: '';
|
|
450
|
+
const poster = props.posterSource?.uri || props.poster || '';
|
|
451
|
+
const attrs = [
|
|
452
|
+
context ? `in="${context}"` : '',
|
|
453
|
+
paused !== null ? `state="${paused ? 'paused' : 'playing'}"` : '',
|
|
454
|
+
src ? `src="${src}"` : '',
|
|
455
|
+
poster ? `poster="${poster}"` : '',
|
|
456
|
+
].filter(Boolean).join(' ');
|
|
457
|
+
return `${indent}[video${attrs ? ' ' + attrs : ''}]\n`;
|
|
392
458
|
}
|
|
393
459
|
|
|
394
|
-
|
|
460
|
+
// Structural views: pass children through without adding <view> wrapper
|
|
461
|
+
// This collapses the 50+ nesting levels into flat, readable output
|
|
462
|
+
return childrenText;
|
|
395
463
|
}
|
|
396
464
|
|
|
397
465
|
let elementsText = processNode(fiber, 0);
|
|
398
466
|
|
|
399
|
-
// Clean up
|
|
400
|
-
elementsText = elementsText.replace(
|
|
467
|
+
// Clean up excessive blank lines
|
|
468
|
+
elementsText = elementsText.replace(/\n{3,}/g, '\n\n');
|
|
401
469
|
|
|
402
470
|
logger.info('FiberTreeWalker', `Found ${interactives.length} interactive elements`);
|
|
403
471
|
return { elementsText: elementsText.trim(), interactives };
|