@base44-preview/vite-plugin 0.2.22-pr.37.fd9cb1a → 0.2.22-pr.39.4150ff4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/injections/visual-edit-agent.d.ts +1 -1
  2. package/dist/injections/visual-edit-agent.d.ts.map +1 -1
  3. package/dist/injections/visual-edit-agent.js +458 -1
  4. package/dist/injections/visual-edit-agent.js.map +1 -1
  5. package/dist/jsx-processor.d.ts +15 -0
  6. package/dist/jsx-processor.d.ts.map +1 -0
  7. package/dist/jsx-processor.js +106 -0
  8. package/dist/jsx-processor.js.map +1 -0
  9. package/dist/jsx-utils.d.ts +7 -0
  10. package/dist/jsx-utils.d.ts.map +1 -0
  11. package/dist/jsx-utils.js +12 -0
  12. package/dist/jsx-utils.js.map +1 -0
  13. package/dist/processors/shared-utils.d.ts +19 -0
  14. package/dist/processors/shared-utils.d.ts.map +1 -0
  15. package/dist/processors/shared-utils.js +77 -0
  16. package/dist/processors/shared-utils.js.map +1 -0
  17. package/dist/processors/static-array-processor.d.ts +31 -0
  18. package/dist/processors/static-array-processor.d.ts.map +1 -0
  19. package/dist/processors/static-array-processor.js +175 -0
  20. package/dist/processors/static-array-processor.js.map +1 -0
  21. package/dist/statics/index.mjs +1 -5
  22. package/dist/statics/index.mjs.map +1 -1
  23. package/dist/visual-edit-plugin.d.ts.map +1 -1
  24. package/dist/visual-edit-plugin.js +5 -0
  25. package/dist/visual-edit-plugin.js.map +1 -1
  26. package/package.json +2 -1
  27. package/src/injections/visual-edit-agent.ts +561 -1
  28. package/src/jsx-processor.ts +147 -0
  29. package/src/jsx-utils.ts +15 -0
  30. package/src/processors/shared-utils.ts +116 -0
  31. package/src/processors/static-array-processor.ts +257 -0
  32. package/src/visual-edit-plugin.ts +6 -0
  33. package/dist/injections/visual-edit-agent/capabilities/inline-editing/core.d.ts +0 -25
  34. package/dist/injections/visual-edit-agent/capabilities/inline-editing/core.d.ts.map +0 -1
  35. package/dist/injections/visual-edit-agent/capabilities/inline-editing/core.js +0 -95
  36. package/dist/injections/visual-edit-agent/capabilities/inline-editing/core.js.map +0 -1
  37. package/dist/injections/visual-edit-agent/capabilities/inline-editing/index.d.ts +0 -4
  38. package/dist/injections/visual-edit-agent/capabilities/inline-editing/index.d.ts.map +0 -1
  39. package/dist/injections/visual-edit-agent/capabilities/inline-editing/index.js +0 -4
  40. package/dist/injections/visual-edit-agent/capabilities/inline-editing/index.js.map +0 -1
  41. package/dist/injections/visual-edit-agent/capabilities/inline-editing/styles.d.ts +0 -9
  42. package/dist/injections/visual-edit-agent/capabilities/inline-editing/styles.d.ts.map +0 -1
  43. package/dist/injections/visual-edit-agent/capabilities/inline-editing/styles.js +0 -26
  44. package/dist/injections/visual-edit-agent/capabilities/inline-editing/styles.js.map +0 -1
  45. package/dist/injections/visual-edit-agent/capabilities/inline-editing/validation.d.ts +0 -10
  46. package/dist/injections/visual-edit-agent/capabilities/inline-editing/validation.d.ts.map +0 -1
  47. package/dist/injections/visual-edit-agent/capabilities/inline-editing/validation.js +0 -60
  48. package/dist/injections/visual-edit-agent/capabilities/inline-editing/validation.js.map +0 -1
  49. package/dist/injections/visual-edit-agent/constants.d.ts +0 -10
  50. package/dist/injections/visual-edit-agent/constants.d.ts.map +0 -1
  51. package/dist/injections/visual-edit-agent/constants.js +0 -10
  52. package/dist/injections/visual-edit-agent/constants.js.map +0 -1
  53. package/dist/injections/visual-edit-agent/handlers/click-handlers.d.ts +0 -10
  54. package/dist/injections/visual-edit-agent/handlers/click-handlers.d.ts.map +0 -1
  55. package/dist/injections/visual-edit-agent/handlers/click-handlers.js +0 -108
  56. package/dist/injections/visual-edit-agent/handlers/click-handlers.js.map +0 -1
  57. package/dist/injections/visual-edit-agent/handlers/hover-handlers.d.ts +0 -14
  58. package/dist/injections/visual-edit-agent/handlers/hover-handlers.d.ts.map +0 -1
  59. package/dist/injections/visual-edit-agent/handlers/hover-handlers.js +0 -64
  60. package/dist/injections/visual-edit-agent/handlers/hover-handlers.js.map +0 -1
  61. package/dist/injections/visual-edit-agent/handlers/inline-edit-handlers.d.ts +0 -14
  62. package/dist/injections/visual-edit-agent/handlers/inline-edit-handlers.d.ts.map +0 -1
  63. package/dist/injections/visual-edit-agent/handlers/inline-edit-handlers.js +0 -109
  64. package/dist/injections/visual-edit-agent/handlers/inline-edit-handlers.js.map +0 -1
  65. package/dist/injections/visual-edit-agent/handlers/message-handlers.d.ts +0 -26
  66. package/dist/injections/visual-edit-agent/handlers/message-handlers.d.ts.map +0 -1
  67. package/dist/injections/visual-edit-agent/handlers/message-handlers.js +0 -145
  68. package/dist/injections/visual-edit-agent/handlers/message-handlers.js.map +0 -1
  69. package/dist/injections/visual-edit-agent/handlers/messages/toggle-inline-edit-mode.d.ts +0 -7
  70. package/dist/injections/visual-edit-agent/handlers/messages/toggle-inline-edit-mode.d.ts.map +0 -1
  71. package/dist/injections/visual-edit-agent/handlers/messages/toggle-inline-edit-mode.js +0 -54
  72. package/dist/injections/visual-edit-agent/handlers/messages/toggle-inline-edit-mode.js.map +0 -1
  73. package/dist/injections/visual-edit-agent/handlers/messages/toggle-visual-edit-mode.d.ts +0 -11
  74. package/dist/injections/visual-edit-agent/handlers/messages/toggle-visual-edit-mode.d.ts.map +0 -1
  75. package/dist/injections/visual-edit-agent/handlers/messages/toggle-visual-edit-mode.js +0 -32
  76. package/dist/injections/visual-edit-agent/handlers/messages/toggle-visual-edit-mode.js.map +0 -1
  77. package/dist/injections/visual-edit-agent/handlers/messages/types.d.ts +0 -86
  78. package/dist/injections/visual-edit-agent/handlers/messages/types.d.ts.map +0 -1
  79. package/dist/injections/visual-edit-agent/handlers/messages/types.js +0 -28
  80. package/dist/injections/visual-edit-agent/handlers/messages/types.js.map +0 -1
  81. package/dist/injections/visual-edit-agent/index.d.ts +0 -5
  82. package/dist/injections/visual-edit-agent/index.d.ts.map +0 -1
  83. package/dist/injections/visual-edit-agent/index.js +0 -95
  84. package/dist/injections/visual-edit-agent/index.js.map +0 -1
  85. package/dist/injections/visual-edit-agent/state/agent-state.d.ts +0 -17
  86. package/dist/injections/visual-edit-agent/state/agent-state.d.ts.map +0 -1
  87. package/dist/injections/visual-edit-agent/state/agent-state.js +0 -18
  88. package/dist/injections/visual-edit-agent/state/agent-state.js.map +0 -1
  89. package/dist/injections/visual-edit-agent/ui/overlay.d.ts +0 -26
  90. package/dist/injections/visual-edit-agent/ui/overlay.d.ts.map +0 -1
  91. package/dist/injections/visual-edit-agent/ui/overlay.js +0 -104
  92. package/dist/injections/visual-edit-agent/ui/overlay.js.map +0 -1
  93. package/dist/injections/visual-edit-agent/utils/dom-utils.d.ts +0 -14
  94. package/dist/injections/visual-edit-agent/utils/dom-utils.d.ts.map +0 -1
  95. package/dist/injections/visual-edit-agent/utils/dom-utils.js +0 -34
  96. package/dist/injections/visual-edit-agent/utils/dom-utils.js.map +0 -1
  97. package/src/injections/visual-edit-agent/README.md +0 -222
  98. package/src/injections/visual-edit-agent/capabilities/inline-editing/core.ts +0 -120
  99. package/src/injections/visual-edit-agent/capabilities/inline-editing/index.ts +0 -10
  100. package/src/injections/visual-edit-agent/capabilities/inline-editing/styles.ts +0 -26
  101. package/src/injections/visual-edit-agent/capabilities/inline-editing/validation.ts +0 -67
  102. package/src/injections/visual-edit-agent/constants.ts +0 -9
  103. package/src/injections/visual-edit-agent/handlers/click-handlers.ts +0 -135
  104. package/src/injections/visual-edit-agent/handlers/hover-handlers.ts +0 -78
  105. package/src/injections/visual-edit-agent/handlers/inline-edit-handlers.ts +0 -141
  106. package/src/injections/visual-edit-agent/handlers/message-handlers.ts +0 -191
  107. package/src/injections/visual-edit-agent/handlers/messages/toggle-inline-edit-mode.ts +0 -65
  108. package/src/injections/visual-edit-agent/handlers/messages/toggle-visual-edit-mode.ts +0 -40
  109. package/src/injections/visual-edit-agent/handlers/messages/types.ts +0 -112
  110. package/src/injections/visual-edit-agent/index.ts +0 -108
  111. package/src/injections/visual-edit-agent/state/agent-state.ts +0 -31
  112. package/src/injections/visual-edit-agent/ui/overlay.ts +0 -126
  113. package/src/injections/visual-edit-agent/utils/dom-utils.ts +0 -39
@@ -1,2 +1,2 @@
1
- export { setupVisualEditAgent } from "./visual-edit-agent/index.js";
1
+ export declare function setupVisualEditAgent(): void;
2
2
  //# sourceMappingURL=visual-edit-agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"visual-edit-agent.d.ts","sourceRoot":"","sources":["../../src/injections/visual-edit-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"visual-edit-agent.d.ts","sourceRoot":"","sources":["../../src/injections/visual-edit-agent.ts"],"names":[],"mappings":"AAEA,wBAAgB,oBAAoB,SA8iBnC"}
@@ -1,2 +1,459 @@
1
- export { setupVisualEditAgent } from "./visual-edit-agent/index.js";
1
+ import { findElementsById, updateElementClasses } from "./utils.js";
2
+ export function setupVisualEditAgent() {
3
+ // State variables (replacing React useState/useRef)
4
+ let isVisualEditMode = false;
5
+ let isPopoverDragging = false;
6
+ let isDropdownOpen = false;
7
+ let hoverOverlays = [];
8
+ let selectedOverlays = [];
9
+ let currentHighlightedElements = [];
10
+ let selectedElementId = null;
11
+ // Create overlay element
12
+ const createOverlay = (isSelected = false) => {
13
+ const overlay = document.createElement("div");
14
+ overlay.style.position = "absolute";
15
+ overlay.style.pointerEvents = "none";
16
+ overlay.style.transition = "all 0.1s ease-in-out";
17
+ overlay.style.zIndex = "9999";
18
+ if (isSelected) {
19
+ overlay.style.border = "2px solid #2563EB";
20
+ }
21
+ else {
22
+ overlay.style.border = "2px solid #95a5fc";
23
+ overlay.style.backgroundColor = "rgba(99, 102, 241, 0.05)";
24
+ }
25
+ return overlay;
26
+ };
27
+ // Position overlay relative to element
28
+ const positionOverlay = (overlay, element, isSelected = false) => {
29
+ if (!element || !isVisualEditMode)
30
+ return;
31
+ const htmlElement = element;
32
+ // Force layout recalculation
33
+ void htmlElement.offsetWidth;
34
+ const rect = element.getBoundingClientRect();
35
+ overlay.style.top = `${rect.top + window.scrollY}px`;
36
+ overlay.style.left = `${rect.left + window.scrollX}px`;
37
+ overlay.style.width = `${rect.width}px`;
38
+ overlay.style.height = `${rect.height}px`;
39
+ // Check if label already exists in overlay
40
+ let label = overlay.querySelector("div");
41
+ if (!label) {
42
+ label = document.createElement("div");
43
+ label.textContent = element.tagName.toLowerCase();
44
+ label.style.position = "absolute";
45
+ label.style.top = "-27px";
46
+ label.style.left = "-2px";
47
+ label.style.padding = "2px 8px";
48
+ label.style.fontSize = "11px";
49
+ label.style.fontWeight = isSelected ? "500" : "400";
50
+ label.style.color = isSelected ? "#ffffff" : "#526cff";
51
+ label.style.backgroundColor = isSelected ? "#526cff" : "#DBEAFE";
52
+ label.style.borderRadius = "3px";
53
+ label.style.minWidth = "24px";
54
+ label.style.textAlign = "center";
55
+ overlay.appendChild(label);
56
+ }
57
+ };
58
+ // Clear hover overlays
59
+ const clearHoverOverlays = () => {
60
+ hoverOverlays.forEach((overlay) => {
61
+ if (overlay && overlay.parentNode) {
62
+ overlay.remove();
63
+ }
64
+ });
65
+ hoverOverlays = [];
66
+ currentHighlightedElements = [];
67
+ };
68
+ // Handle mouse over event
69
+ const handleMouseOver = (e) => {
70
+ if (!isVisualEditMode || isPopoverDragging)
71
+ return;
72
+ const target = e.target;
73
+ // Prevent hover effects when a dropdown is open
74
+ if (isDropdownOpen) {
75
+ clearHoverOverlays();
76
+ return;
77
+ }
78
+ // Prevent hover effects on SVG path elements
79
+ if (target.tagName.toLowerCase() === "path") {
80
+ clearHoverOverlays();
81
+ return;
82
+ }
83
+ // Support both data-source-location and data-visual-selector-id
84
+ const element = target.closest("[data-source-location], [data-visual-selector-id]");
85
+ if (!element) {
86
+ clearHoverOverlays();
87
+ return;
88
+ }
89
+ // Prefer data-source-location, fallback to data-visual-selector-id
90
+ const htmlElement = element;
91
+ const selectorId = htmlElement.dataset.sourceLocation ||
92
+ htmlElement.dataset.visualSelectorId;
93
+ // Skip if this element is already selected
94
+ if (selectedElementId === selectorId) {
95
+ clearHoverOverlays();
96
+ return;
97
+ }
98
+ // Find all elements with the same ID
99
+ const elements = findElementsById(selectorId || null);
100
+ // Clear previous hover overlays
101
+ clearHoverOverlays();
102
+ // Create overlays for all matching elements
103
+ elements.forEach((el) => {
104
+ const overlay = createOverlay(false);
105
+ document.body.appendChild(overlay);
106
+ hoverOverlays.push(overlay);
107
+ positionOverlay(overlay, el);
108
+ });
109
+ currentHighlightedElements = elements;
110
+ };
111
+ // Handle mouse out event
112
+ const handleMouseOut = () => {
113
+ if (isPopoverDragging)
114
+ return;
115
+ clearHoverOverlays();
116
+ };
117
+ // Handle element click
118
+ const handleElementClick = (e) => {
119
+ if (!isVisualEditMode)
120
+ return;
121
+ const target = e.target;
122
+ // Close dropdowns when clicking anywhere in iframe if a dropdown is open
123
+ if (isDropdownOpen) {
124
+ e.preventDefault();
125
+ e.stopPropagation();
126
+ e.stopImmediatePropagation();
127
+ window.parent.postMessage({ type: "close-dropdowns" }, "*");
128
+ return;
129
+ }
130
+ // Prevent clicking on SVG path elements
131
+ if (target.tagName.toLowerCase() === "path") {
132
+ return;
133
+ }
134
+ // Prevent default behavior immediately when in visual edit mode
135
+ e.preventDefault();
136
+ e.stopPropagation();
137
+ e.stopImmediatePropagation();
138
+ // Support both data-source-location and data-visual-selector-id
139
+ const element = target.closest("[data-source-location], [data-visual-selector-id]");
140
+ if (!element) {
141
+ return;
142
+ }
143
+ const htmlElement = element;
144
+ const visualSelectorId = htmlElement.dataset.sourceLocation ||
145
+ htmlElement.dataset.visualSelectorId;
146
+ // Clear any existing selected overlays
147
+ selectedOverlays.forEach((overlay) => {
148
+ if (overlay && overlay.parentNode) {
149
+ overlay.remove();
150
+ }
151
+ });
152
+ selectedOverlays = [];
153
+ // Find all elements with the same ID
154
+ const elements = findElementsById(visualSelectorId || null);
155
+ // Create selected overlays for all matching elements
156
+ elements.forEach((el) => {
157
+ const overlay = createOverlay(true);
158
+ document.body.appendChild(overlay);
159
+ selectedOverlays.push(overlay);
160
+ positionOverlay(overlay, el, true);
161
+ });
162
+ selectedElementId = visualSelectorId || null;
163
+ // Clear hover overlays
164
+ clearHoverOverlays();
165
+ // Calculate element position for popover positioning
166
+ const rect = element.getBoundingClientRect();
167
+ const elementPosition = {
168
+ top: rect.top,
169
+ left: rect.left,
170
+ right: rect.right,
171
+ bottom: rect.bottom,
172
+ width: rect.width,
173
+ height: rect.height,
174
+ centerX: rect.left + rect.width / 2,
175
+ centerY: rect.top + rect.height / 2,
176
+ };
177
+ // Send message to parent window with element info including position
178
+ const svgElement = element;
179
+ const elementData = {
180
+ type: "element-selected",
181
+ tagName: element.tagName,
182
+ classes: svgElement.className?.baseVal ||
183
+ element.className ||
184
+ "",
185
+ visualSelectorId: visualSelectorId,
186
+ content: element.innerText,
187
+ dataSourceLocation: htmlElement.dataset.sourceLocation,
188
+ isDynamicContent: htmlElement.dataset.dynamicContent === "true",
189
+ linenumber: htmlElement.dataset.linenumber,
190
+ filename: htmlElement.dataset.filename,
191
+ position: elementPosition,
192
+ };
193
+ window.parent.postMessage(elementData, "*");
194
+ };
195
+ // Unselect the current element
196
+ const unselectElement = () => {
197
+ selectedOverlays.forEach((overlay) => {
198
+ if (overlay && overlay.parentNode) {
199
+ overlay.remove();
200
+ }
201
+ });
202
+ selectedOverlays = [];
203
+ selectedElementId = null;
204
+ };
205
+ const updateElementClassesAndReposition = (visualSelectorId, classes) => {
206
+ const elements = findElementsById(visualSelectorId);
207
+ if (elements.length === 0)
208
+ return;
209
+ updateElementClasses(elements, classes);
210
+ // Use a small delay to allow the browser to recalculate layout before repositioning
211
+ setTimeout(() => {
212
+ // Reposition selected overlays
213
+ if (selectedElementId === visualSelectorId) {
214
+ selectedOverlays.forEach((overlay, index) => {
215
+ if (index < elements.length) {
216
+ positionOverlay(overlay, elements[index]);
217
+ }
218
+ });
219
+ }
220
+ // Reposition hover overlays if needed
221
+ if (currentHighlightedElements.length > 0) {
222
+ const hoveredElement = currentHighlightedElements[0];
223
+ const hoveredId = hoveredElement?.dataset?.visualSelectorId;
224
+ if (hoveredId === visualSelectorId) {
225
+ hoverOverlays.forEach((overlay, index) => {
226
+ if (index < currentHighlightedElements.length) {
227
+ positionOverlay(overlay, currentHighlightedElements[index]);
228
+ }
229
+ });
230
+ }
231
+ }
232
+ }, 50);
233
+ };
234
+ // Update element content by visual selector ID
235
+ const updateElementContent = (visualSelectorId, content) => {
236
+ const elements = findElementsById(visualSelectorId);
237
+ if (elements.length === 0) {
238
+ return;
239
+ }
240
+ elements.forEach((element) => {
241
+ element.innerText = content;
242
+ });
243
+ setTimeout(() => {
244
+ if (selectedElementId === visualSelectorId) {
245
+ selectedOverlays.forEach((overlay, index) => {
246
+ if (index < elements.length) {
247
+ positionOverlay(overlay, elements[index]);
248
+ }
249
+ });
250
+ }
251
+ }, 50);
252
+ };
253
+ // Toggle visual edit mode
254
+ const toggleVisualEditMode = (isEnabled) => {
255
+ isVisualEditMode = isEnabled;
256
+ if (!isEnabled) {
257
+ clearHoverOverlays();
258
+ selectedOverlays.forEach((overlay) => {
259
+ if (overlay && overlay.parentNode) {
260
+ overlay.remove();
261
+ }
262
+ });
263
+ selectedOverlays = [];
264
+ currentHighlightedElements = [];
265
+ selectedElementId = null;
266
+ document.body.style.cursor = "default";
267
+ document.removeEventListener("mouseover", handleMouseOver);
268
+ document.removeEventListener("mouseout", handleMouseOut);
269
+ document.removeEventListener("click", handleElementClick, true);
270
+ }
271
+ else {
272
+ document.body.style.cursor = "crosshair";
273
+ document.addEventListener("mouseover", handleMouseOver);
274
+ document.addEventListener("mouseout", handleMouseOut);
275
+ document.addEventListener("click", handleElementClick, true);
276
+ }
277
+ };
278
+ // Handle scroll events to update popover position
279
+ const handleScroll = () => {
280
+ if (selectedElementId) {
281
+ const elements = findElementsById(selectedElementId);
282
+ if (elements.length > 0) {
283
+ const element = elements[0];
284
+ const rect = element.getBoundingClientRect();
285
+ const viewportHeight = window.innerHeight;
286
+ const viewportWidth = window.innerWidth;
287
+ const isInViewport = rect.top < viewportHeight &&
288
+ rect.bottom > 0 &&
289
+ rect.left < viewportWidth &&
290
+ rect.right > 0;
291
+ const elementPosition = {
292
+ top: rect.top,
293
+ left: rect.left,
294
+ right: rect.right,
295
+ bottom: rect.bottom,
296
+ width: rect.width,
297
+ height: rect.height,
298
+ centerX: rect.left + rect.width / 2,
299
+ centerY: rect.top + rect.height / 2,
300
+ };
301
+ window.parent.postMessage({
302
+ type: "element-position-update",
303
+ position: elementPosition,
304
+ isInViewport: isInViewport,
305
+ visualSelectorId: selectedElementId,
306
+ }, "*");
307
+ }
308
+ }
309
+ };
310
+ // Handle messages from parent window
311
+ const handleMessage = (event) => {
312
+ const message = event.data;
313
+ switch (message.type) {
314
+ case "toggle-visual-edit-mode":
315
+ toggleVisualEditMode(message.data.enabled);
316
+ break;
317
+ case "update-classes":
318
+ if (message.data && message.data.classes !== undefined) {
319
+ updateElementClassesAndReposition(message.data.visualSelectorId, message.data.classes);
320
+ }
321
+ else {
322
+ console.warn("[VisualEditAgent] Invalid update-classes message:", message);
323
+ }
324
+ break;
325
+ case "unselect-element":
326
+ unselectElement();
327
+ break;
328
+ case "refresh-page":
329
+ window.location.reload();
330
+ break;
331
+ case "update-content":
332
+ if (message.data && message.data.content !== undefined) {
333
+ updateElementContent(message.data.visualSelectorId, message.data.content);
334
+ }
335
+ else {
336
+ console.warn("[VisualEditAgent] Invalid update-content message:", message);
337
+ }
338
+ break;
339
+ case "request-element-position":
340
+ if (selectedElementId) {
341
+ const elements = findElementsById(selectedElementId);
342
+ if (elements.length > 0) {
343
+ const element = elements[0];
344
+ const rect = element.getBoundingClientRect();
345
+ const viewportHeight = window.innerHeight;
346
+ const viewportWidth = window.innerWidth;
347
+ const isInViewport = rect.top < viewportHeight &&
348
+ rect.bottom > 0 &&
349
+ rect.left < viewportWidth &&
350
+ rect.right > 0;
351
+ const elementPosition = {
352
+ top: rect.top,
353
+ left: rect.left,
354
+ right: rect.right,
355
+ bottom: rect.bottom,
356
+ width: rect.width,
357
+ height: rect.height,
358
+ centerX: rect.left + rect.width / 2,
359
+ centerY: rect.top + rect.height / 2,
360
+ };
361
+ window.parent.postMessage({
362
+ type: "element-position-update",
363
+ position: elementPosition,
364
+ isInViewport: isInViewport,
365
+ visualSelectorId: selectedElementId,
366
+ }, "*");
367
+ }
368
+ }
369
+ break;
370
+ case "popover-drag-state":
371
+ if (message.data && message.data.isDragging !== undefined) {
372
+ isPopoverDragging = message.data.isDragging;
373
+ if (message.data.isDragging) {
374
+ clearHoverOverlays();
375
+ }
376
+ }
377
+ break;
378
+ case "dropdown-state":
379
+ if (message.data && message.data.isOpen !== undefined) {
380
+ isDropdownOpen = message.data.isOpen;
381
+ if (message.data.isOpen) {
382
+ clearHoverOverlays();
383
+ }
384
+ }
385
+ break;
386
+ default:
387
+ break;
388
+ }
389
+ };
390
+ // Handle window resize to reposition overlays
391
+ const handleResize = () => {
392
+ if (selectedElementId) {
393
+ const elements = findElementsById(selectedElementId);
394
+ selectedOverlays.forEach((overlay, index) => {
395
+ if (index < elements.length) {
396
+ positionOverlay(overlay, elements[index]);
397
+ }
398
+ });
399
+ }
400
+ if (currentHighlightedElements.length > 0) {
401
+ hoverOverlays.forEach((overlay, index) => {
402
+ if (index < currentHighlightedElements.length) {
403
+ positionOverlay(overlay, currentHighlightedElements[index]);
404
+ }
405
+ });
406
+ }
407
+ };
408
+ // Initialize: Add IDs to elements that don't have them but have linenumbers
409
+ const elementsWithLineNumber = document.querySelectorAll("[data-linenumber]:not([data-visual-selector-id])");
410
+ elementsWithLineNumber.forEach((el, index) => {
411
+ const htmlEl = el;
412
+ const id = `visual-id-${htmlEl.dataset.filename}-${htmlEl.dataset.linenumber}-${index}`;
413
+ htmlEl.dataset.visualSelectorId = id;
414
+ });
415
+ // Create mutation observer to detect layout changes
416
+ const mutationObserver = new MutationObserver((mutations) => {
417
+ const needsUpdate = mutations.some((mutation) => {
418
+ const hasVisualId = (node) => {
419
+ if (node.nodeType === Node.ELEMENT_NODE) {
420
+ const el = node;
421
+ if (el.dataset && el.dataset.visualSelectorId) {
422
+ return true;
423
+ }
424
+ for (let i = 0; i < el.children.length; i++) {
425
+ if (hasVisualId(el.children[i])) {
426
+ return true;
427
+ }
428
+ }
429
+ }
430
+ return false;
431
+ };
432
+ const isLayoutChange = mutation.type === "attributes" &&
433
+ (mutation.attributeName === "style" ||
434
+ mutation.attributeName === "class" ||
435
+ mutation.attributeName === "width" ||
436
+ mutation.attributeName === "height");
437
+ return isLayoutChange && hasVisualId(mutation.target);
438
+ });
439
+ if (needsUpdate) {
440
+ setTimeout(handleResize, 50);
441
+ }
442
+ });
443
+ // Set up event listeners
444
+ window.addEventListener("message", handleMessage);
445
+ window.addEventListener("scroll", handleScroll, true);
446
+ document.addEventListener("scroll", handleScroll, true);
447
+ window.addEventListener("resize", handleResize);
448
+ window.addEventListener("scroll", handleResize);
449
+ // Start observing DOM mutations
450
+ mutationObserver.observe(document.body, {
451
+ attributes: true,
452
+ childList: true,
453
+ subtree: true,
454
+ attributeFilter: ["style", "class", "width", "height"],
455
+ });
456
+ // Send ready message to parent
457
+ window.parent.postMessage({ type: "visual-edit-agent-ready" }, "*");
458
+ }
2
459
  //# sourceMappingURL=visual-edit-agent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"visual-edit-agent.js","sourceRoot":"","sources":["../../src/injections/visual-edit-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"visual-edit-agent.js","sourceRoot":"","sources":["../../src/injections/visual-edit-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { NodePath } from "@babel/traverse";
2
+ import type * as t from "@babel/types";
3
+ export declare class JSXProcessor {
4
+ private types;
5
+ private filename;
6
+ private staticArrayProcessor;
7
+ constructor(types: typeof t, filename: string);
8
+ processJSXElement(path: NodePath<t.JSXOpeningElement>): void;
9
+ private addSourceLocationAttribute;
10
+ private addDynamicContentAttribute;
11
+ private addContentEditableAttribute;
12
+ private hasAttribute;
13
+ private checkIfElementHasDynamicContent;
14
+ }
15
+ //# sourceMappingURL=jsx-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsx-processor.d.ts","sourceRoot":"","sources":["../src/jsx-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAC;AAGvC,qBAAa,YAAY;IAIrB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,QAAQ;IAJlB,OAAO,CAAC,oBAAoB,CAAuB;gBAGzC,KAAK,EAAE,OAAO,CAAC,EACf,QAAQ,EAAE,MAAM;IAK1B,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAS5D,OAAO,CAAC,0BAA0B;IAclC,OAAO,CAAC,0BAA0B;IAkBlC,OAAO,CAAC,2BAA2B;IAWnC,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,+BAA+B;CAoExC"}
@@ -0,0 +1,106 @@
1
+ import { StaticArrayProcessor } from "./processors/static-array-processor.js";
2
+ export class JSXProcessor {
3
+ types;
4
+ filename;
5
+ staticArrayProcessor;
6
+ constructor(types, filename) {
7
+ this.types = types;
8
+ this.filename = filename;
9
+ this.staticArrayProcessor = new StaticArrayProcessor(types);
10
+ }
11
+ processJSXElement(path) {
12
+ if (this.hasAttribute(path, "data-source-location"))
13
+ return;
14
+ this.addSourceLocationAttribute(path);
15
+ this.addDynamicContentAttribute(path);
16
+ this.addContentEditableAttribute(path);
17
+ this.staticArrayProcessor.process(path);
18
+ }
19
+ addSourceLocationAttribute(path) {
20
+ const { line, column } = path.node.loc?.start || { line: 1, column: 0 };
21
+ const value = `${this.filename}:${line}:${column}`;
22
+ path.node.attributes.push(this.types.jsxAttribute(this.types.jsxIdentifier("data-source-location"), this.types.stringLiteral(value)));
23
+ }
24
+ addDynamicContentAttribute(path) {
25
+ const parentElement = path.parentPath;
26
+ if (!parentElement?.isJSXElement())
27
+ return;
28
+ const isDynamic = this.checkIfElementHasDynamicContent(parentElement.node);
29
+ path.node.attributes.push(this.types.jsxAttribute(this.types.jsxIdentifier("data-dynamic-content"), this.types.stringLiteral(isDynamic ? "true" : "false")));
30
+ }
31
+ addContentEditableAttribute(path) {
32
+ path.node.attributes.push(this.types.jsxAttribute(this.types.jsxIdentifier("content-editable"), this.types.stringLiteral("true")));
33
+ }
34
+ hasAttribute(path, name) {
35
+ return path.node.attributes.some((attr) => this.types.isJSXAttribute(attr) &&
36
+ this.types.isJSXIdentifier(attr.name) &&
37
+ attr.name.name === name);
38
+ }
39
+ checkIfElementHasDynamicContent(jsxElement) {
40
+ let hasDynamicContent = false;
41
+ const checkNode = (node) => {
42
+ if (this.types.isJSXExpressionContainer(node)) {
43
+ const expression = node.expression;
44
+ if (this.types.isJSXEmptyExpression(expression))
45
+ return false;
46
+ if (!this.types.isLiteral(expression))
47
+ return true;
48
+ }
49
+ if (this.types.isTemplateLiteral(node) &&
50
+ node.expressions.length > 0) {
51
+ return true;
52
+ }
53
+ if (this.types.isMemberExpression(node))
54
+ return true;
55
+ if (this.types.isCallExpression(node))
56
+ return true;
57
+ if (this.types.isConditionalExpression(node))
58
+ return true;
59
+ if (this.types.isIdentifier(node)) {
60
+ const dynamicNames = [
61
+ "props",
62
+ "state",
63
+ "data",
64
+ "item",
65
+ "value",
66
+ "text",
67
+ "content",
68
+ ];
69
+ if (dynamicNames.some((name) => node.name.includes(name))) {
70
+ return true;
71
+ }
72
+ }
73
+ return false;
74
+ };
75
+ const traverseNode = (node) => {
76
+ if (hasDynamicContent)
77
+ return;
78
+ if (checkNode(node)) {
79
+ hasDynamicContent = true;
80
+ return;
81
+ }
82
+ for (const key of Object.keys(node)) {
83
+ if (hasDynamicContent)
84
+ return;
85
+ const value = node[key];
86
+ if (Array.isArray(value)) {
87
+ for (const child of value) {
88
+ if (child && typeof child === "object" && "type" in child) {
89
+ traverseNode(child);
90
+ }
91
+ }
92
+ }
93
+ else if (value && typeof value === "object" && "type" in value) {
94
+ traverseNode(value);
95
+ }
96
+ }
97
+ };
98
+ for (const child of jsxElement.children) {
99
+ if (hasDynamicContent)
100
+ break;
101
+ traverseNode(child);
102
+ }
103
+ return hasDynamicContent;
104
+ }
105
+ }
106
+ //# sourceMappingURL=jsx-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsx-processor.js","sourceRoot":"","sources":["../src/jsx-processor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E,MAAM,OAAO,YAAY;IAIb;IACA;IAJF,oBAAoB,CAAuB;IAEnD,YACU,KAAe,EACf,QAAgB;QADhB,UAAK,GAAL,KAAK,CAAU;QACf,aAAQ,GAAR,QAAQ,CAAQ;QAExB,IAAI,CAAC,oBAAoB,GAAG,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC9D,CAAC;IAED,iBAAiB,CAAC,IAAmC;QACnD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,sBAAsB,CAAC;YAAE,OAAO;QAE5D,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAEO,0BAA0B,CAChC,IAAmC;QAEnC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACxE,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;QAEnD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CACvB,IAAI,CAAC,KAAK,CAAC,YAAY,CACrB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,EAChD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAChC,CACF,CAAC;IACJ,CAAC;IAEO,0BAA0B,CAChC,IAAmC;QAEnC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE;YAAE,OAAO;QAE3C,MAAM,SAAS,GAAG,IAAI,CAAC,+BAA+B,CACpD,aAAa,CAAC,IAAoB,CACnC,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CACvB,IAAI,CAAC,KAAK,CAAC,YAAY,CACrB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,EAChD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CACvD,CACF,CAAC;IACJ,CAAC;IAEO,2BAA2B,CACjC,IAAmC;QAEnC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CACvB,IAAI,CAAC,KAAK,CAAC,YAAY,CACrB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAC5C,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CACjC,CACF,CAAC;IACJ,CAAC;IAEO,YAAY,CAClB,IAAmC,EACnC,IAAY;QAEZ,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAC9B,CAAC,IAA2C,EAAE,EAAE,CAC9C,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAC1B,CAAC;IACJ,CAAC;IAEO,+BAA+B,CAAC,UAAwB;QAC9D,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAE9B,MAAM,SAAS,GAAG,CAAC,IAAY,EAAW,EAAE;YAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9C,MAAM,UAAU,GAAI,IAAiC,CAAC,UAAU,CAAC;gBACjE,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,UAAU,CAAC;oBAAE,OAAO,KAAK,CAAC;gBAC9D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC;oBAAE,OAAO,IAAI,CAAC;YACrD,CAAC;YAED,IACE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBACjC,IAA0B,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAClD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;YACrD,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;YACnD,IAAI,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;YAE1D,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,MAAM,YAAY,GAAG;oBACnB,OAAO;oBACP,OAAO;oBACP,MAAM;oBACN,MAAM;oBACN,OAAO;oBACP,MAAM;oBACN,SAAS;iBACV,CAAC;gBACF,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAE,IAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;oBAC5E,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,MAAM,YAAY,GAAG,CAAC,IAA6B,EAAQ,EAAE;YAC3D,IAAI,iBAAiB;gBAAE,OAAO;YAC9B,IAAI,SAAS,CAAC,IAAyB,CAAC,EAAE,CAAC;gBACzC,iBAAiB,GAAG,IAAI,CAAC;gBACzB,OAAO;YACT,CAAC;YAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpC,IAAI,iBAAiB;oBAAE,OAAO;gBAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBAExB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;wBAC1B,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;4BAC1D,YAAY,CAAC,KAAgC,CAAC,CAAC;wBACjD,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;oBACjE,YAAY,CAAC,KAAgC,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YACxC,IAAI,iBAAiB;gBAAE,MAAM;YAC7B,YAAY,CAAC,KAA2C,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC3B,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import type * as t from "@babel/types";
2
+ export declare class JSXUtils {
3
+ private static types;
4
+ static init(types: typeof t): void;
5
+ static getAttributeName(attr: t.JSXAttribute): string;
6
+ }
7
+ //# sourceMappingURL=jsx-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsx-utils.d.ts","sourceRoot":"","sources":["../src/jsx-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAC;AAEvC,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAW;IAE/B,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;IAI3B,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,GAAG,MAAM;CAKtD"}
@@ -0,0 +1,12 @@
1
+ export class JSXUtils {
2
+ static types;
3
+ static init(types) {
4
+ this.types = types;
5
+ }
6
+ static getAttributeName(attr) {
7
+ return this.types.isJSXNamespacedName(attr.name)
8
+ ? `${attr.name.namespace.name}:${attr.name.name.name}`
9
+ : attr.name.name;
10
+ }
11
+ }
12
+ //# sourceMappingURL=jsx-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsx-utils.js","sourceRoot":"","sources":["../src/jsx-utils.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,QAAQ;IACX,MAAM,CAAC,KAAK,CAAW;IAE/B,MAAM,CAAC,IAAI,CAAC,KAAe;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,IAAoB;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9C,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACtD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;CACF"}