@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.
@@ -1 +1 @@
1
- {"version":3,"file":"Screenshot.web.d.ts","sourceRoot":"","sources":["../../src/dev/Screenshot.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA2FH,wBAAgB,cAAc,SA2B7B"}
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
- const { toBlob } = await import('html-to-image');
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
- const { default: html2canvas } = await import('html2canvas');
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":"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"}
1
+ {"version":3,"file":"Screenshot.web.js","sourceRoot":"","sources":["../../src/dev/Screenshot.web.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Native stub for element selection.
3
+ * Returns null.
4
+ */
5
+ export declare function VibeSelect(): null;
6
+ //# sourceMappingURL=Select.d.ts.map
@@ -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,8 @@
1
+ /**
2
+ * Native stub for element selection.
3
+ * Returns null.
4
+ */
5
+ export function VibeSelect() {
6
+ return null;
7
+ }
8
+ //# sourceMappingURL=Select.js.map
@@ -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;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAK9C,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,2CAS7D"}
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":";AAUA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,MAAM,UAAU,cAAc,CAAC,EAAE,QAAQ,EAAqB;IAC7D,OAAO,CACN,KAAC,iBAAiB,cACjB,MAAC,cAAc,eACd,KAAC,cAAc,KAAG,EACjB,QAAQ,IACO,GACE,CACpB,CAAA;AACF,CAAC"}
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.7",
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
- "html2canvas": "^1.4.1",
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": {