@vibecodeapp/sdk 0.4.7 → 0.4.9
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/dev/Screenshot.web.d.ts.map +1 -1
- package/dist/dev/Screenshot.web.js +5 -3
- package/dist/dev/Screenshot.web.js.map +1 -1
- package/dist/dev/Select.d.ts +6 -0
- package/dist/dev/Select.d.ts.map +1 -0
- package/dist/dev/Select.js +8 -0
- package/dist/dev/Select.js.map +1 -0
- package/dist/dev/Select.web.d.ts +17 -0
- package/dist/dev/Select.web.d.ts.map +1 -0
- package/dist/dev/Select.web.js +464 -0
- package/dist/dev/Select.web.js.map +1 -0
- package/dist/dev/VibeDevWrapper.d.ts +1 -0
- package/dist/dev/VibeDevWrapper.d.ts.map +1 -1
- package/dist/dev/VibeDevWrapper.js +2 -1
- package/dist/dev/VibeDevWrapper.js.map +1 -1
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Screenshot.web.d.ts","sourceRoot":"","sources":["../../src/dev/Screenshot.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"Screenshot.web.d.ts","sourceRoot":"","sources":["../../src/dev/Screenshot.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA6FH,wBAAgB,cAAc,SA2B7B"}
|
|
@@ -17,8 +17,9 @@ function isChromium() {
|
|
|
17
17
|
async function captureScreenshot() {
|
|
18
18
|
const scale = window.devicePixelRatio || 1;
|
|
19
19
|
if (isChromium()) {
|
|
20
|
-
// Use html-to-image for Chromium
|
|
21
|
-
|
|
20
|
+
// Use html-to-image for Chromium
|
|
21
|
+
// biome-ignore lint/style/noCommonJs
|
|
22
|
+
const { toBlob } = require('html-to-image');
|
|
22
23
|
const width = document.body.scrollWidth;
|
|
23
24
|
const height = document.body.scrollHeight;
|
|
24
25
|
const blob = await toBlob(document.body, {
|
|
@@ -37,7 +38,8 @@ async function captureScreenshot() {
|
|
|
37
38
|
};
|
|
38
39
|
}
|
|
39
40
|
// Use html2canvas for Safari/Firefox
|
|
40
|
-
|
|
41
|
+
// biome-ignore lint/style/noCommonJs
|
|
42
|
+
const html2canvas = require('html2canvas').default;
|
|
41
43
|
const canvas = await html2canvas(document.body, {
|
|
42
44
|
useCORS: true,
|
|
43
45
|
allowTaint: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Screenshot.web.js","sourceRoot":"","sources":["../../src/dev/Screenshot.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,SAAS,UAAU;IAClB,IAAI,OAAO,SAAS,KAAK,WAAW;QAAE,OAAO,KAAK,CAAA;IAClD,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAA;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACrE,CAAC;AAgBD,KAAK,UAAU,iBAAiB;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAA;IAE1C,IAAI,UAAU,EAAE,EAAE,CAAC;QAClB,
|
|
1
|
+
{"version":3,"file":"Screenshot.web.js","sourceRoot":"","sources":["../../src/dev/Screenshot.web.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../src/dev/Select.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,UAAU,SAEzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.js","sourceRoot":"","sources":["../../src/dev/Select.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,UAAU;IACzB,OAAO,IAAI,CAAA;AACZ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Element Selection Module (Web)
|
|
3
|
+
*
|
|
4
|
+
* Enables visual element selection within the iframe. When the parent sends
|
|
5
|
+
* 'vibecode:select:start', this component activates selection mode:
|
|
6
|
+
*
|
|
7
|
+
* - Hovering an element highlights it (blue outline)
|
|
8
|
+
* - Clicking an element locks it as selected (green outline) and notifies parent
|
|
9
|
+
* - Cmd/Ctrl + click for multi-select
|
|
10
|
+
* - Parent confirms via 'vibecode:select:confirm' to finalize
|
|
11
|
+
* - Parent can cancel via 'vibecode:select:cancel'
|
|
12
|
+
*
|
|
13
|
+
* Only one selection session can be active at a time.
|
|
14
|
+
* All event listeners use capture phase to intercept before the app.
|
|
15
|
+
*/
|
|
16
|
+
export declare function VibeSelect(): null;
|
|
17
|
+
//# sourceMappingURL=Select.web.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.web.d.ts","sourceRoot":"","sources":["../../src/dev/Select.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA2RH,wBAAgB,UAAU,SAiBzB"}
|
|
@@ -0,0 +1,464 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Element Selection Module (Web)
|
|
3
|
+
*
|
|
4
|
+
* Enables visual element selection within the iframe. When the parent sends
|
|
5
|
+
* 'vibecode:select:start', this component activates selection mode:
|
|
6
|
+
*
|
|
7
|
+
* - Hovering an element highlights it (blue outline)
|
|
8
|
+
* - Clicking an element locks it as selected (green outline) and notifies parent
|
|
9
|
+
* - Cmd/Ctrl + click for multi-select
|
|
10
|
+
* - Parent confirms via 'vibecode:select:confirm' to finalize
|
|
11
|
+
* - Parent can cancel via 'vibecode:select:cancel'
|
|
12
|
+
*
|
|
13
|
+
* Only one selection session can be active at a time.
|
|
14
|
+
* All event listeners use capture phase to intercept before the app.
|
|
15
|
+
*/
|
|
16
|
+
import { useEffect } from 'react';
|
|
17
|
+
const HOVERED_ATTR = 'data-vibecode-hovered';
|
|
18
|
+
const SELECTED_ATTR = 'data-vibecode-selected';
|
|
19
|
+
const CHILD_ATTR = 'data-vibecode-child';
|
|
20
|
+
/** Cleanup function for the active selection session */
|
|
21
|
+
let activeSession = null;
|
|
22
|
+
/** Confirm handler for the active session */
|
|
23
|
+
let confirmHandler = null;
|
|
24
|
+
/**
|
|
25
|
+
* Extract React fiber info if available.
|
|
26
|
+
*/
|
|
27
|
+
function getReactInfo(el) {
|
|
28
|
+
try {
|
|
29
|
+
const fiberKey = Object.keys(el).find((key) => key.startsWith('__reactFiber') || key.startsWith('__reactInternalInstance'));
|
|
30
|
+
if (!fiberKey)
|
|
31
|
+
return null;
|
|
32
|
+
const fiber = el[fiberKey];
|
|
33
|
+
if (!fiber)
|
|
34
|
+
return null;
|
|
35
|
+
let componentName = null;
|
|
36
|
+
const fiberType = fiber.type;
|
|
37
|
+
if (fiberType && typeof fiberType === 'object') {
|
|
38
|
+
componentName = fiberType.displayName || fiberType.name || null;
|
|
39
|
+
}
|
|
40
|
+
else if (typeof fiberType === 'string') {
|
|
41
|
+
componentName = fiberType;
|
|
42
|
+
}
|
|
43
|
+
const source = fiber._debugSource;
|
|
44
|
+
// Map to sourceInfo format to align with webapp
|
|
45
|
+
if (source?.fileName) {
|
|
46
|
+
return {
|
|
47
|
+
fileName: source.fileName,
|
|
48
|
+
lineNumber: source.lineNumber || null,
|
|
49
|
+
columnNumber: source.columnNumber || null,
|
|
50
|
+
displayName: el.tagName.toLowerCase(),
|
|
51
|
+
componentName,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Extract inline styles from element.
|
|
62
|
+
*/
|
|
63
|
+
function getInlineStyles(el) {
|
|
64
|
+
const htmlEl = el;
|
|
65
|
+
const result = {};
|
|
66
|
+
if (htmlEl.style) {
|
|
67
|
+
for (let i = 0; i < htmlEl.style.length; i++) {
|
|
68
|
+
const prop = htmlEl.style[i];
|
|
69
|
+
result[prop] = htmlEl.style.getPropertyValue(prop);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get classes as array from element.
|
|
76
|
+
*/
|
|
77
|
+
function getClasses(el) {
|
|
78
|
+
const className = el.className && typeof el.className === 'string' ? el.className : '';
|
|
79
|
+
return className.trim() ? className.trim().split(/\s+/) : [];
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Get ancestor hierarchy up to maxDepth levels.
|
|
83
|
+
*/
|
|
84
|
+
function getAncestors(el, maxDepth = 5) {
|
|
85
|
+
const ancestors = [];
|
|
86
|
+
let current = el.parentElement;
|
|
87
|
+
let depth = 0;
|
|
88
|
+
while (current && current !== document.documentElement && depth < maxDepth) {
|
|
89
|
+
ancestors.push({
|
|
90
|
+
tagName: current.tagName.toLowerCase(),
|
|
91
|
+
id: current.id || null,
|
|
92
|
+
classes: getClasses(current),
|
|
93
|
+
});
|
|
94
|
+
current = current.parentElement;
|
|
95
|
+
depth++;
|
|
96
|
+
}
|
|
97
|
+
return ancestors;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Get direct children summary.
|
|
101
|
+
*/
|
|
102
|
+
function getChildren(el, maxCount = 10) {
|
|
103
|
+
return Array.from(el.children)
|
|
104
|
+
.slice(0, maxCount)
|
|
105
|
+
.map((child) => ({
|
|
106
|
+
tagName: child.tagName.toLowerCase(),
|
|
107
|
+
id: child.id || null,
|
|
108
|
+
classes: getClasses(child),
|
|
109
|
+
}));
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Extract comprehensive metadata from an element.
|
|
113
|
+
*/
|
|
114
|
+
function getElementMetadata(el) {
|
|
115
|
+
const rect = el.getBoundingClientRect();
|
|
116
|
+
const htmlEl = el;
|
|
117
|
+
const inputEl = el;
|
|
118
|
+
const anchorEl = el;
|
|
119
|
+
const imgEl = el;
|
|
120
|
+
// Attributes (excluding class - use classes array instead)
|
|
121
|
+
const attributes = {};
|
|
122
|
+
for (let i = 0; i < el.attributes.length; i++) {
|
|
123
|
+
const attr = el.attributes[i];
|
|
124
|
+
if (attr.name !== 'class') {
|
|
125
|
+
attributes[attr.name] = attr.value;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// Computed styles
|
|
129
|
+
const styles = getComputedStyle(el);
|
|
130
|
+
const computedStyles = {
|
|
131
|
+
color: styles.color,
|
|
132
|
+
fontSize: styles.fontSize,
|
|
133
|
+
fontWeight: styles.fontWeight,
|
|
134
|
+
fontFamily: styles.fontFamily,
|
|
135
|
+
lineHeight: styles.lineHeight,
|
|
136
|
+
textAlign: styles.textAlign,
|
|
137
|
+
backgroundColor: styles.backgroundColor,
|
|
138
|
+
display: styles.display,
|
|
139
|
+
position: styles.position,
|
|
140
|
+
width: styles.width,
|
|
141
|
+
height: styles.height,
|
|
142
|
+
padding: styles.padding,
|
|
143
|
+
margin: styles.margin,
|
|
144
|
+
border: styles.border,
|
|
145
|
+
borderRadius: styles.borderRadius,
|
|
146
|
+
opacity: styles.opacity,
|
|
147
|
+
zIndex: styles.zIndex,
|
|
148
|
+
};
|
|
149
|
+
// Form element info
|
|
150
|
+
const isFormElement = ['INPUT', 'TEXTAREA', 'SELECT', 'BUTTON'].includes(el.tagName);
|
|
151
|
+
const inputInfo = isFormElement
|
|
152
|
+
? {
|
|
153
|
+
type: inputEl.type || null,
|
|
154
|
+
name: inputEl.name || null,
|
|
155
|
+
placeholder: inputEl.placeholder || null,
|
|
156
|
+
value: inputEl.value || null,
|
|
157
|
+
}
|
|
158
|
+
: null;
|
|
159
|
+
// Media element info
|
|
160
|
+
const isMediaElement = ['IMG', 'VIDEO', 'AUDIO', 'SOURCE'].includes(el.tagName);
|
|
161
|
+
const mediaInfo = isMediaElement
|
|
162
|
+
? {
|
|
163
|
+
src: imgEl.src || null,
|
|
164
|
+
alt: imgEl.alt || null,
|
|
165
|
+
srcset: imgEl.srcset || null,
|
|
166
|
+
}
|
|
167
|
+
: null;
|
|
168
|
+
// Link element info
|
|
169
|
+
const isLinkElement = el.tagName === 'A';
|
|
170
|
+
const linkInfo = isLinkElement
|
|
171
|
+
? {
|
|
172
|
+
href: anchorEl.href || null,
|
|
173
|
+
target: anchorEl.target || null,
|
|
174
|
+
}
|
|
175
|
+
: null;
|
|
176
|
+
return {
|
|
177
|
+
tagName: el.tagName.toLowerCase(),
|
|
178
|
+
id: el.id || null,
|
|
179
|
+
classes: getClasses(el),
|
|
180
|
+
textContent: el.textContent?.trim().slice(0, 100) || null,
|
|
181
|
+
selector: generateSelector(el),
|
|
182
|
+
rect: { top: rect.top, left: rect.left, width: rect.width, height: rect.height },
|
|
183
|
+
attributes,
|
|
184
|
+
dataset: htmlEl.dataset ? { ...htmlEl.dataset } : {},
|
|
185
|
+
inlineStyles: getInlineStyles(el),
|
|
186
|
+
computedStyles,
|
|
187
|
+
innerHTML: el.innerHTML.slice(0, 500),
|
|
188
|
+
outerHTML: el.outerHTML.slice(0, 1000),
|
|
189
|
+
ancestors: getAncestors(el),
|
|
190
|
+
children: getChildren(el),
|
|
191
|
+
// Use sourceInfo (aligned with webapp) instead of reactInfo
|
|
192
|
+
sourceInfo: getReactInfo(el),
|
|
193
|
+
inputInfo,
|
|
194
|
+
mediaInfo,
|
|
195
|
+
linkInfo,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Generate a unique CSS selector for an element.
|
|
200
|
+
*/
|
|
201
|
+
function generateSelector(el) {
|
|
202
|
+
if (el.id)
|
|
203
|
+
return `#${el.id}`;
|
|
204
|
+
const parts = [];
|
|
205
|
+
let current = el;
|
|
206
|
+
while (current && current !== document.body && current !== document.documentElement) {
|
|
207
|
+
let selector = current.tagName.toLowerCase();
|
|
208
|
+
const parent = current.parentElement;
|
|
209
|
+
if (parent) {
|
|
210
|
+
const sameTagSiblings = Array.from(parent.children).filter((child) => child.tagName === current.tagName);
|
|
211
|
+
const index = sameTagSiblings.indexOf(current) + 1;
|
|
212
|
+
selector += `:nth-of-type(${index})`;
|
|
213
|
+
}
|
|
214
|
+
parts.unshift(selector);
|
|
215
|
+
if (current.parentElement?.id) {
|
|
216
|
+
parts.unshift(`#${current.parentElement.id}`);
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
current = current.parentElement;
|
|
220
|
+
}
|
|
221
|
+
return parts.join(' > ');
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Create and inject the highlight styles.
|
|
225
|
+
*/
|
|
226
|
+
function createHighlightStyles() {
|
|
227
|
+
const style = document.createElement('style');
|
|
228
|
+
style.setAttribute('data-vibecode-styles', 'true');
|
|
229
|
+
style.textContent = `
|
|
230
|
+
[${HOVERED_ATTR}] {
|
|
231
|
+
outline: 2px solid #0066ff !important;
|
|
232
|
+
outline-offset: 2px !important;
|
|
233
|
+
border-radius: 2px;
|
|
234
|
+
}
|
|
235
|
+
[${CHILD_ATTR}] {
|
|
236
|
+
outline: 1px dashed rgba(0, 102, 255, 0.5) !important;
|
|
237
|
+
outline-offset: 1px !important;
|
|
238
|
+
}
|
|
239
|
+
[${SELECTED_ATTR}] {
|
|
240
|
+
outline: 2px solid rgb(0, 204, 146) !important;
|
|
241
|
+
outline-offset: 2px !important;
|
|
242
|
+
border-radius: 0 2px 2px 2px;
|
|
243
|
+
}
|
|
244
|
+
`;
|
|
245
|
+
document.head.appendChild(style);
|
|
246
|
+
return style;
|
|
247
|
+
}
|
|
248
|
+
export function VibeSelect() {
|
|
249
|
+
useEffect(() => {
|
|
250
|
+
const handleMessage = (event) => {
|
|
251
|
+
if (event.data?.type === 'vibecode:select:start') {
|
|
252
|
+
startSelection(event.data.requestId);
|
|
253
|
+
}
|
|
254
|
+
else if (event.data?.type === 'vibecode:select:confirm') {
|
|
255
|
+
confirmHandler?.();
|
|
256
|
+
}
|
|
257
|
+
else if (event.data?.type === 'vibecode:select:cancel') {
|
|
258
|
+
activeSession?.();
|
|
259
|
+
}
|
|
260
|
+
};
|
|
261
|
+
window.addEventListener('message', handleMessage);
|
|
262
|
+
return () => window.removeEventListener('message', handleMessage);
|
|
263
|
+
}, []);
|
|
264
|
+
return null;
|
|
265
|
+
}
|
|
266
|
+
function startSelection(requestId) {
|
|
267
|
+
activeSession?.();
|
|
268
|
+
const selectedElements = new Set();
|
|
269
|
+
const tooltips = new Map();
|
|
270
|
+
let hoveredElement = null;
|
|
271
|
+
// Inject highlight styles
|
|
272
|
+
const styleElement = createHighlightStyles();
|
|
273
|
+
function createTooltip(el) {
|
|
274
|
+
const tooltip = document.createElement('div');
|
|
275
|
+
tooltip.textContent = el.tagName.toLowerCase();
|
|
276
|
+
tooltip.style.cssText = `
|
|
277
|
+
position: fixed;
|
|
278
|
+
pointer-events: none;
|
|
279
|
+
background: rgb(0, 204, 146);
|
|
280
|
+
color: white;
|
|
281
|
+
font-size: 11px;
|
|
282
|
+
font-weight: 600;
|
|
283
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
|
284
|
+
padding: 2px 6px;
|
|
285
|
+
border-radius: 3px 3px 0 0;
|
|
286
|
+
z-index: 2147483646;
|
|
287
|
+
`;
|
|
288
|
+
document.body.appendChild(tooltip);
|
|
289
|
+
updateTooltipPosition(el, tooltip);
|
|
290
|
+
return { tooltip };
|
|
291
|
+
}
|
|
292
|
+
function updateTooltipPosition(el, tooltip) {
|
|
293
|
+
const rect = el.getBoundingClientRect();
|
|
294
|
+
tooltip.style.left = `${rect.left - 4}px`;
|
|
295
|
+
tooltip.style.top = `${rect.top - 24}px`;
|
|
296
|
+
}
|
|
297
|
+
function updateAllTooltips() {
|
|
298
|
+
for (const [el, entry] of tooltips.entries()) {
|
|
299
|
+
if (document.contains(el)) {
|
|
300
|
+
updateTooltipPosition(el, entry.tooltip);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
function removeTooltip(entry) {
|
|
305
|
+
entry.tooltip.remove();
|
|
306
|
+
}
|
|
307
|
+
function clearChildHighlights() {
|
|
308
|
+
document.querySelectorAll(`[${CHILD_ATTR}]`).forEach((el) => {
|
|
309
|
+
el.removeAttribute(CHILD_ATTR);
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
function showChildHighlights(parent) {
|
|
313
|
+
clearChildHighlights();
|
|
314
|
+
Array.from(parent.children).forEach((child) => {
|
|
315
|
+
child.setAttribute(CHILD_ATTR, '');
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
function notifySelection() {
|
|
319
|
+
const elements = Array.from(selectedElements).map(getElementMetadata);
|
|
320
|
+
window.parent.postMessage({
|
|
321
|
+
type: 'vibecode:select:selected',
|
|
322
|
+
requestId,
|
|
323
|
+
elements,
|
|
324
|
+
}, '*');
|
|
325
|
+
}
|
|
326
|
+
const onMouseOver = (e) => {
|
|
327
|
+
const target = e.target;
|
|
328
|
+
if (!target || target === document.body || target === document.documentElement) {
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
// Don't show hover on selected elements
|
|
332
|
+
if (selectedElements.has(target)) {
|
|
333
|
+
if (hoveredElement) {
|
|
334
|
+
hoveredElement.removeAttribute(HOVERED_ATTR);
|
|
335
|
+
}
|
|
336
|
+
clearChildHighlights();
|
|
337
|
+
hoveredElement = null;
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
// Remove hover from previous element
|
|
341
|
+
if (hoveredElement && hoveredElement !== target) {
|
|
342
|
+
hoveredElement.removeAttribute(HOVERED_ATTR);
|
|
343
|
+
}
|
|
344
|
+
hoveredElement = target;
|
|
345
|
+
target.setAttribute(HOVERED_ATTR, '');
|
|
346
|
+
// Show child highlights if element has children
|
|
347
|
+
if (target.children.length > 0) {
|
|
348
|
+
showChildHighlights(target);
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
clearChildHighlights();
|
|
352
|
+
}
|
|
353
|
+
};
|
|
354
|
+
const onMouseOut = (e) => {
|
|
355
|
+
const relatedTarget = e.relatedTarget;
|
|
356
|
+
// Only clear if leaving the document entirely
|
|
357
|
+
if (!relatedTarget || relatedTarget === document.documentElement) {
|
|
358
|
+
if (hoveredElement) {
|
|
359
|
+
hoveredElement.removeAttribute(HOVERED_ATTR);
|
|
360
|
+
hoveredElement = null;
|
|
361
|
+
}
|
|
362
|
+
clearChildHighlights();
|
|
363
|
+
}
|
|
364
|
+
};
|
|
365
|
+
const onClick = (e) => {
|
|
366
|
+
const el = hoveredElement || document.elementFromPoint(e.clientX, e.clientY);
|
|
367
|
+
if (!el || el === document.body || el === document.documentElement) {
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
e.preventDefault();
|
|
371
|
+
e.stopPropagation();
|
|
372
|
+
const isMultiSelect = e.metaKey || e.ctrlKey;
|
|
373
|
+
if (isMultiSelect) {
|
|
374
|
+
// Toggle selection
|
|
375
|
+
if (selectedElements.has(el)) {
|
|
376
|
+
el.removeAttribute(SELECTED_ATTR);
|
|
377
|
+
selectedElements.delete(el);
|
|
378
|
+
const entry = tooltips.get(el);
|
|
379
|
+
if (entry) {
|
|
380
|
+
removeTooltip(entry);
|
|
381
|
+
tooltips.delete(el);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
else {
|
|
385
|
+
el.setAttribute(SELECTED_ATTR, '');
|
|
386
|
+
selectedElements.add(el);
|
|
387
|
+
tooltips.set(el, createTooltip(el));
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
391
|
+
// Single select - clear others
|
|
392
|
+
for (const selectedEl of selectedElements) {
|
|
393
|
+
selectedEl.removeAttribute(SELECTED_ATTR);
|
|
394
|
+
const entry = tooltips.get(selectedEl);
|
|
395
|
+
if (entry) {
|
|
396
|
+
removeTooltip(entry);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
selectedElements.clear();
|
|
400
|
+
tooltips.clear();
|
|
401
|
+
el.setAttribute(SELECTED_ATTR, '');
|
|
402
|
+
selectedElements.add(el);
|
|
403
|
+
tooltips.set(el, createTooltip(el));
|
|
404
|
+
}
|
|
405
|
+
// Remove hover highlight from clicked element
|
|
406
|
+
if (hoveredElement) {
|
|
407
|
+
hoveredElement.removeAttribute(HOVERED_ATTR);
|
|
408
|
+
hoveredElement = null;
|
|
409
|
+
}
|
|
410
|
+
clearChildHighlights();
|
|
411
|
+
notifySelection();
|
|
412
|
+
};
|
|
413
|
+
const onConfirm = () => {
|
|
414
|
+
const elements = Array.from(selectedElements).map(getElementMetadata);
|
|
415
|
+
window.parent.postMessage({
|
|
416
|
+
type: 'vibecode:select:result',
|
|
417
|
+
requestId,
|
|
418
|
+
elements,
|
|
419
|
+
}, '*');
|
|
420
|
+
cleanup();
|
|
421
|
+
};
|
|
422
|
+
// MutationObserver to update tooltip positions on DOM changes
|
|
423
|
+
const mutationObserver = new MutationObserver(() => {
|
|
424
|
+
requestAnimationFrame(updateAllTooltips);
|
|
425
|
+
});
|
|
426
|
+
mutationObserver.observe(document.body, {
|
|
427
|
+
childList: true,
|
|
428
|
+
subtree: true,
|
|
429
|
+
attributes: true,
|
|
430
|
+
characterData: true,
|
|
431
|
+
});
|
|
432
|
+
const onResize = () => {
|
|
433
|
+
requestAnimationFrame(updateAllTooltips);
|
|
434
|
+
};
|
|
435
|
+
window.addEventListener('resize', onResize);
|
|
436
|
+
const cleanup = () => {
|
|
437
|
+
styleElement.remove();
|
|
438
|
+
if (hoveredElement) {
|
|
439
|
+
hoveredElement.removeAttribute(HOVERED_ATTR);
|
|
440
|
+
}
|
|
441
|
+
clearChildHighlights();
|
|
442
|
+
for (const el of selectedElements) {
|
|
443
|
+
el.removeAttribute(SELECTED_ATTR);
|
|
444
|
+
}
|
|
445
|
+
selectedElements.clear();
|
|
446
|
+
for (const entry of tooltips.values()) {
|
|
447
|
+
removeTooltip(entry);
|
|
448
|
+
}
|
|
449
|
+
tooltips.clear();
|
|
450
|
+
document.removeEventListener('mouseover', onMouseOver, true);
|
|
451
|
+
document.removeEventListener('mouseout', onMouseOut, true);
|
|
452
|
+
document.removeEventListener('click', onClick, true);
|
|
453
|
+
window.removeEventListener('resize', onResize);
|
|
454
|
+
mutationObserver.disconnect();
|
|
455
|
+
activeSession = null;
|
|
456
|
+
confirmHandler = null;
|
|
457
|
+
};
|
|
458
|
+
document.addEventListener('mouseover', onMouseOver, true);
|
|
459
|
+
document.addEventListener('mouseout', onMouseOut, true);
|
|
460
|
+
document.addEventListener('click', onClick, true);
|
|
461
|
+
activeSession = cleanup;
|
|
462
|
+
confirmHandler = onConfirm;
|
|
463
|
+
}
|
|
464
|
+
//# sourceMappingURL=Select.web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.web.js","sourceRoot":"","sources":["../../src/dev/Select.web.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Currently includes VibeSafeInsets for safe area handling on web.
|
|
6
6
|
* VibeErrorBoundary for error reporting on web.
|
|
7
7
|
* VibeScreenshot for screenshot capture on web.
|
|
8
|
+
* VibeSelect for element selection on web.
|
|
8
9
|
*/
|
|
9
10
|
import type { PropsWithChildren } from 'react';
|
|
10
11
|
export declare function VibeDevWrapper({ children }: PropsWithChildren): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VibeDevWrapper.d.ts","sourceRoot":"","sources":["../../src/dev/VibeDevWrapper.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"VibeDevWrapper.d.ts","sourceRoot":"","sources":["../../src/dev/VibeDevWrapper.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAM9C,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,2CAU7D"}
|
|
@@ -2,7 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { VibeErrorBoundary } from './error-boundry/ErrorBoundary';
|
|
3
3
|
import { VibeSafeInsets } from './safe-inserts/safe-insets';
|
|
4
4
|
import { VibeScreenshot } from './Screenshot';
|
|
5
|
+
import { VibeSelect } from './Select';
|
|
5
6
|
export function VibeDevWrapper({ children }) {
|
|
6
|
-
return (_jsx(VibeErrorBoundary, { children: _jsxs(VibeSafeInsets, { children: [_jsx(VibeScreenshot, {}), children] }) }));
|
|
7
|
+
return (_jsx(VibeErrorBoundary, { children: _jsxs(VibeSafeInsets, { children: [_jsx(VibeScreenshot, {}), _jsx(VibeSelect, {}), children] }) }));
|
|
7
8
|
}
|
|
8
9
|
//# sourceMappingURL=VibeDevWrapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VibeDevWrapper.js","sourceRoot":"","sources":["../../src/dev/VibeDevWrapper.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"VibeDevWrapper.js","sourceRoot":"","sources":["../../src/dev/VibeDevWrapper.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAErC,MAAM,UAAU,cAAc,CAAC,EAAE,QAAQ,EAAqB;IAC7D,OAAO,CACN,KAAC,iBAAiB,cACjB,MAAC,cAAc,eACd,KAAC,cAAc,KAAG,EAClB,KAAC,UAAU,KAAG,EACb,QAAQ,IACO,GACE,CACpB,CAAA;AACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibecodeapp/sdk",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.9",
|
|
4
4
|
"description": "SDK for Vibecodeapp.com - Web polyfills and Metro configuration for React Native",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -37,11 +37,12 @@
|
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@blazejkustra/react-native-alert": "^1.0.0",
|
|
40
|
-
"@teovilla/react-native-web-maps": "^0.9.5",
|
|
41
40
|
"@stardazed/streams-text-encoding": "^1.0.2",
|
|
41
|
+
"@teovilla/react-native-web-maps": "^0.9.5",
|
|
42
42
|
"assert": "^2.1.0",
|
|
43
|
-
"
|
|
43
|
+
"cosmiconfig": "^8.3.6",
|
|
44
44
|
"html-to-image": "^1.11.11",
|
|
45
|
+
"html2canvas": "^1.4.1",
|
|
45
46
|
"p-limit": "^3.1.0"
|
|
46
47
|
},
|
|
47
48
|
"devDependencies": {
|