@base44-preview/vite-plugin 0.2.27-pr.41.77be9cb → 0.2.27-pr.44.489d834

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 (98) hide show
  1. package/dist/capabilities/inline-edit/controller.d.ts.map +1 -1
  2. package/dist/capabilities/inline-edit/controller.js +9 -3
  3. package/dist/capabilities/inline-edit/controller.js.map +1 -1
  4. package/dist/capabilities/inline-edit/dom-utils.d.ts +1 -0
  5. package/dist/capabilities/inline-edit/dom-utils.d.ts.map +1 -1
  6. package/dist/capabilities/inline-edit/dom-utils.js +17 -7
  7. package/dist/capabilities/inline-edit/dom-utils.js.map +1 -1
  8. package/dist/injections/visual-edit-agent.d.ts +1 -1
  9. package/dist/injections/visual-edit-agent.d.ts.map +1 -1
  10. package/dist/injections/visual-edit-agent.js +576 -1
  11. package/dist/injections/visual-edit-agent.js.map +1 -1
  12. package/dist/statics/index.mjs +2 -2
  13. package/dist/statics/index.mjs.map +1 -1
  14. package/package.json +1 -1
  15. package/src/capabilities/inline-edit/controller.ts +35 -29
  16. package/src/capabilities/inline-edit/dom-utils.ts +14 -4
  17. package/src/injections/visual-edit-agent.ts +714 -1
  18. package/dist/injections/visual-edit-agent/capabilities/inline-editing/core.d.ts +0 -25
  19. package/dist/injections/visual-edit-agent/capabilities/inline-editing/core.d.ts.map +0 -1
  20. package/dist/injections/visual-edit-agent/capabilities/inline-editing/core.js +0 -95
  21. package/dist/injections/visual-edit-agent/capabilities/inline-editing/core.js.map +0 -1
  22. package/dist/injections/visual-edit-agent/capabilities/inline-editing/index.d.ts +0 -4
  23. package/dist/injections/visual-edit-agent/capabilities/inline-editing/index.d.ts.map +0 -1
  24. package/dist/injections/visual-edit-agent/capabilities/inline-editing/index.js +0 -4
  25. package/dist/injections/visual-edit-agent/capabilities/inline-editing/index.js.map +0 -1
  26. package/dist/injections/visual-edit-agent/capabilities/inline-editing/styles.d.ts +0 -9
  27. package/dist/injections/visual-edit-agent/capabilities/inline-editing/styles.d.ts.map +0 -1
  28. package/dist/injections/visual-edit-agent/capabilities/inline-editing/styles.js +0 -26
  29. package/dist/injections/visual-edit-agent/capabilities/inline-editing/styles.js.map +0 -1
  30. package/dist/injections/visual-edit-agent/capabilities/inline-editing/validation.d.ts +0 -17
  31. package/dist/injections/visual-edit-agent/capabilities/inline-editing/validation.d.ts.map +0 -1
  32. package/dist/injections/visual-edit-agent/capabilities/inline-editing/validation.js +0 -76
  33. package/dist/injections/visual-edit-agent/capabilities/inline-editing/validation.js.map +0 -1
  34. package/dist/injections/visual-edit-agent/constants.d.ts +0 -10
  35. package/dist/injections/visual-edit-agent/constants.d.ts.map +0 -1
  36. package/dist/injections/visual-edit-agent/constants.js +0 -10
  37. package/dist/injections/visual-edit-agent/constants.js.map +0 -1
  38. package/dist/injections/visual-edit-agent/handlers/click-handlers.d.ts +0 -10
  39. package/dist/injections/visual-edit-agent/handlers/click-handlers.d.ts.map +0 -1
  40. package/dist/injections/visual-edit-agent/handlers/click-handlers.js +0 -117
  41. package/dist/injections/visual-edit-agent/handlers/click-handlers.js.map +0 -1
  42. package/dist/injections/visual-edit-agent/handlers/hover-handlers.d.ts +0 -14
  43. package/dist/injections/visual-edit-agent/handlers/hover-handlers.d.ts.map +0 -1
  44. package/dist/injections/visual-edit-agent/handlers/hover-handlers.js +0 -64
  45. package/dist/injections/visual-edit-agent/handlers/hover-handlers.js.map +0 -1
  46. package/dist/injections/visual-edit-agent/handlers/inline-edit-handlers.d.ts +0 -14
  47. package/dist/injections/visual-edit-agent/handlers/inline-edit-handlers.d.ts.map +0 -1
  48. package/dist/injections/visual-edit-agent/handlers/inline-edit-handlers.js +0 -114
  49. package/dist/injections/visual-edit-agent/handlers/inline-edit-handlers.js.map +0 -1
  50. package/dist/injections/visual-edit-agent/handlers/message-handlers.d.ts +0 -26
  51. package/dist/injections/visual-edit-agent/handlers/message-handlers.d.ts.map +0 -1
  52. package/dist/injections/visual-edit-agent/handlers/message-handlers.js +0 -148
  53. package/dist/injections/visual-edit-agent/handlers/message-handlers.js.map +0 -1
  54. package/dist/injections/visual-edit-agent/handlers/messages/toggle-inline-edit-mode.d.ts +0 -7
  55. package/dist/injections/visual-edit-agent/handlers/messages/toggle-inline-edit-mode.d.ts.map +0 -1
  56. package/dist/injections/visual-edit-agent/handlers/messages/toggle-inline-edit-mode.js +0 -54
  57. package/dist/injections/visual-edit-agent/handlers/messages/toggle-inline-edit-mode.js.map +0 -1
  58. package/dist/injections/visual-edit-agent/handlers/messages/toggle-visual-edit-mode.d.ts +0 -11
  59. package/dist/injections/visual-edit-agent/handlers/messages/toggle-visual-edit-mode.d.ts.map +0 -1
  60. package/dist/injections/visual-edit-agent/handlers/messages/toggle-visual-edit-mode.js +0 -32
  61. package/dist/injections/visual-edit-agent/handlers/messages/toggle-visual-edit-mode.js.map +0 -1
  62. package/dist/injections/visual-edit-agent/handlers/messages/types.d.ts +0 -105
  63. package/dist/injections/visual-edit-agent/handlers/messages/types.d.ts.map +0 -1
  64. package/dist/injections/visual-edit-agent/handlers/messages/types.js +0 -28
  65. package/dist/injections/visual-edit-agent/handlers/messages/types.js.map +0 -1
  66. package/dist/injections/visual-edit-agent/index.d.ts +0 -6
  67. package/dist/injections/visual-edit-agent/index.d.ts.map +0 -1
  68. package/dist/injections/visual-edit-agent/index.js +0 -109
  69. package/dist/injections/visual-edit-agent/index.js.map +0 -1
  70. package/dist/injections/visual-edit-agent/state/agent-state.d.ts +0 -17
  71. package/dist/injections/visual-edit-agent/state/agent-state.d.ts.map +0 -1
  72. package/dist/injections/visual-edit-agent/state/agent-state.js +0 -18
  73. package/dist/injections/visual-edit-agent/state/agent-state.js.map +0 -1
  74. package/dist/injections/visual-edit-agent/ui/overlay.d.ts +0 -26
  75. package/dist/injections/visual-edit-agent/ui/overlay.d.ts.map +0 -1
  76. package/dist/injections/visual-edit-agent/ui/overlay.js +0 -104
  77. package/dist/injections/visual-edit-agent/ui/overlay.js.map +0 -1
  78. package/dist/injections/visual-edit-agent/utils/dom-utils.d.ts +0 -14
  79. package/dist/injections/visual-edit-agent/utils/dom-utils.d.ts.map +0 -1
  80. package/dist/injections/visual-edit-agent/utils/dom-utils.js +0 -34
  81. package/dist/injections/visual-edit-agent/utils/dom-utils.js.map +0 -1
  82. package/src/injections/visual-edit-agent/README.md +0 -222
  83. package/src/injections/visual-edit-agent/capabilities/inline-editing/core.ts +0 -120
  84. package/src/injections/visual-edit-agent/capabilities/inline-editing/index.ts +0 -10
  85. package/src/injections/visual-edit-agent/capabilities/inline-editing/styles.ts +0 -26
  86. package/src/injections/visual-edit-agent/capabilities/inline-editing/validation.ts +0 -87
  87. package/src/injections/visual-edit-agent/constants.ts +0 -9
  88. package/src/injections/visual-edit-agent/handlers/click-handlers.ts +0 -146
  89. package/src/injections/visual-edit-agent/handlers/hover-handlers.ts +0 -78
  90. package/src/injections/visual-edit-agent/handlers/inline-edit-handlers.ts +0 -146
  91. package/src/injections/visual-edit-agent/handlers/message-handlers.ts +0 -201
  92. package/src/injections/visual-edit-agent/handlers/messages/toggle-inline-edit-mode.ts +0 -65
  93. package/src/injections/visual-edit-agent/handlers/messages/toggle-visual-edit-mode.ts +0 -40
  94. package/src/injections/visual-edit-agent/handlers/messages/types.ts +0 -134
  95. package/src/injections/visual-edit-agent/index.ts +0 -121
  96. package/src/injections/visual-edit-agent/state/agent-state.ts +0 -31
  97. package/src/injections/visual-edit-agent/ui/overlay.ts +0 -126
  98. package/src/injections/visual-edit-agent/utils/dom-utils.ts +0 -39
@@ -1,2 +1,577 @@
1
- export { setupVisualEditAgent } from "./visual-edit-agent/index.js";
1
+ import { findElementsById, updateElementClasses, updateElementAttribute, collectAllowedAttributes, ALLOWED_ATTRIBUTES, getElementSelectorId } from "./utils.js";
2
+ import { createLayerController } from "./layer-dropdown/controller.js";
3
+ import { LAYER_DROPDOWN_ATTR } from "./layer-dropdown/consts.js";
4
+ import { createInlineEditController } from "../capabilities/inline-edit/index.js";
5
+ export function setupVisualEditAgent() {
6
+ // State variables (replacing React useState/useRef)
7
+ let isVisualEditMode = false;
8
+ let isPopoverDragging = false;
9
+ let isDropdownOpen = false;
10
+ let hoverOverlays = [];
11
+ let selectedOverlays = [];
12
+ let currentHighlightedElements = [];
13
+ let selectedElementId = null;
14
+ const REPOSITION_DELAY_MS = 50;
15
+ // Create overlay element
16
+ const createOverlay = (isSelected = false) => {
17
+ const overlay = document.createElement("div");
18
+ overlay.style.position = "absolute";
19
+ overlay.style.pointerEvents = "none";
20
+ overlay.style.transition = "all 0.1s ease-in-out";
21
+ overlay.style.zIndex = "9999";
22
+ if (isSelected) {
23
+ overlay.style.border = "2px solid #2563EB";
24
+ }
25
+ else {
26
+ overlay.style.border = "2px solid #95a5fc";
27
+ overlay.style.backgroundColor = "rgba(99, 102, 241, 0.05)";
28
+ }
29
+ return overlay;
30
+ };
31
+ // Position overlay relative to element
32
+ const positionOverlay = (overlay, element, isSelected = false) => {
33
+ if (!element || !isVisualEditMode)
34
+ return;
35
+ const htmlElement = element;
36
+ // Force layout recalculation
37
+ void htmlElement.offsetWidth;
38
+ const rect = element.getBoundingClientRect();
39
+ overlay.style.top = `${rect.top + window.scrollY}px`;
40
+ overlay.style.left = `${rect.left + window.scrollX}px`;
41
+ overlay.style.width = `${rect.width}px`;
42
+ overlay.style.height = `${rect.height}px`;
43
+ // Check if label already exists in overlay
44
+ let label = overlay.querySelector("div");
45
+ if (!label) {
46
+ label = document.createElement("div");
47
+ label.textContent = element.tagName.toLowerCase();
48
+ label.style.position = "absolute";
49
+ label.style.top = "-27px";
50
+ label.style.left = "-2px";
51
+ label.style.padding = "2px 8px";
52
+ label.style.fontSize = "11px";
53
+ label.style.fontWeight = isSelected ? "500" : "400";
54
+ label.style.color = isSelected ? "#ffffff" : "#526cff";
55
+ label.style.backgroundColor = isSelected ? "#526cff" : "#DBEAFE";
56
+ label.style.borderRadius = "3px";
57
+ label.style.minWidth = "24px";
58
+ label.style.textAlign = "center";
59
+ overlay.appendChild(label);
60
+ }
61
+ };
62
+ // --- Inline edit controller ---
63
+ const inlineEdit = createInlineEditController({
64
+ findElementsById,
65
+ getSelectedElementId: () => selectedElementId,
66
+ getSelectedOverlays: () => selectedOverlays,
67
+ positionOverlay,
68
+ clearSelection: () => {
69
+ inlineEdit.clearSelectedMarks(selectedElementId);
70
+ clearSelectedOverlays();
71
+ selectedElementId = null;
72
+ },
73
+ createSelectionOverlays: (elements, elementId) => {
74
+ elements.forEach((el) => {
75
+ const overlay = createOverlay(true);
76
+ document.body.appendChild(overlay);
77
+ selectedOverlays.push(overlay);
78
+ positionOverlay(overlay, el, true);
79
+ });
80
+ selectedElementId = elementId;
81
+ },
82
+ });
83
+ const clearSelection = () => {
84
+ inlineEdit.clearSelectedMarks(selectedElementId);
85
+ clearSelectedOverlays();
86
+ selectedElementId = null;
87
+ };
88
+ // Clear hover overlays
89
+ const clearHoverOverlays = () => {
90
+ hoverOverlays.forEach((overlay) => {
91
+ if (overlay && overlay.parentNode) {
92
+ overlay.remove();
93
+ }
94
+ });
95
+ hoverOverlays = [];
96
+ currentHighlightedElements = [];
97
+ };
98
+ const clearSelectedOverlays = () => {
99
+ selectedOverlays.forEach((overlay) => {
100
+ if (overlay && overlay.parentNode) {
101
+ overlay.remove();
102
+ }
103
+ });
104
+ selectedOverlays = [];
105
+ };
106
+ const TEXT_TAGS = ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'span', 'a', 'label'];
107
+ const notifyElementSelected = (element) => {
108
+ const htmlElement = element;
109
+ const rect = element.getBoundingClientRect();
110
+ const svgElement = element;
111
+ const isTextElement = TEXT_TAGS.includes(element.tagName?.toLowerCase());
112
+ const arrEl = htmlElement.closest("[data-arr-variable-name]");
113
+ const staticArrayName = arrEl?.dataset?.arrVariableName || null;
114
+ const rawIdx = arrEl?.dataset?.arrIndex;
115
+ const staticArrayIndex = rawIdx != null ? parseInt(rawIdx, 10) : null;
116
+ const staticArrayField = htmlElement.dataset?.arrField || null;
117
+ window.parent.postMessage({
118
+ type: "element-selected",
119
+ tagName: element.tagName,
120
+ classes: svgElement.className?.baseVal ||
121
+ element.className ||
122
+ "",
123
+ visualSelectorId: getElementSelectorId(element),
124
+ content: isTextElement ? htmlElement.innerText : undefined,
125
+ dataSourceLocation: htmlElement.dataset.sourceLocation,
126
+ isDynamicContent: htmlElement.dataset.dynamicContent === "true",
127
+ linenumber: htmlElement.dataset.linenumber,
128
+ filename: htmlElement.dataset.filename,
129
+ position: {
130
+ top: rect.top,
131
+ left: rect.left,
132
+ right: rect.right,
133
+ bottom: rect.bottom,
134
+ width: rect.width,
135
+ height: rect.height,
136
+ centerX: rect.left + rect.width / 2,
137
+ centerY: rect.top + rect.height / 2,
138
+ },
139
+ attributes: collectAllowedAttributes(element, ALLOWED_ATTRIBUTES),
140
+ isTextElement,
141
+ staticArrayName,
142
+ staticArrayIndex,
143
+ staticArrayField,
144
+ }, "*");
145
+ };
146
+ // Select an element: create overlays, update state, notify parent
147
+ const selectElement = (element) => {
148
+ const visualSelectorId = getElementSelectorId(element);
149
+ clearSelectedOverlays();
150
+ const elements = findElementsById(visualSelectorId || null);
151
+ elements.forEach((el) => {
152
+ const overlay = createOverlay(true);
153
+ document.body.appendChild(overlay);
154
+ selectedOverlays.push(overlay);
155
+ positionOverlay(overlay, el, true);
156
+ });
157
+ selectedElementId = visualSelectorId || null;
158
+ clearHoverOverlays();
159
+ notifyElementSelected(element);
160
+ return selectedOverlays[0];
161
+ };
162
+ const notifyDeselection = () => {
163
+ selectedElementId = null;
164
+ window.parent.postMessage({ type: "unselect-element" }, "*");
165
+ };
166
+ // Handle mouse over event
167
+ const handleMouseOver = (e) => {
168
+ if (!isVisualEditMode || isPopoverDragging || inlineEdit.isEditing())
169
+ return;
170
+ const target = e.target;
171
+ // Prevent hover effects when a dropdown is open
172
+ if (isDropdownOpen) {
173
+ clearHoverOverlays();
174
+ return;
175
+ }
176
+ // Prevent hover effects on SVG path elements
177
+ if (target.tagName.toLowerCase() === "path") {
178
+ clearHoverOverlays();
179
+ return;
180
+ }
181
+ // Support both data-source-location and data-visual-selector-id
182
+ const element = target.closest("[data-source-location], [data-visual-selector-id]");
183
+ if (!element) {
184
+ clearHoverOverlays();
185
+ return;
186
+ }
187
+ // Prefer data-source-location, fallback to data-visual-selector-id
188
+ const htmlElement = element;
189
+ const selectorId = htmlElement.dataset.sourceLocation ||
190
+ htmlElement.dataset.visualSelectorId;
191
+ // Skip if this element is already selected
192
+ if (selectedElementId === selectorId) {
193
+ clearHoverOverlays();
194
+ return;
195
+ }
196
+ // Find all elements with the same ID
197
+ const elements = findElementsById(selectorId || null);
198
+ // Clear previous hover overlays
199
+ clearHoverOverlays();
200
+ // Create overlays for all matching elements
201
+ elements.forEach((el) => {
202
+ const overlay = createOverlay(false);
203
+ document.body.appendChild(overlay);
204
+ hoverOverlays.push(overlay);
205
+ positionOverlay(overlay, el);
206
+ });
207
+ currentHighlightedElements = elements;
208
+ };
209
+ // Handle mouse out event
210
+ const handleMouseOut = () => {
211
+ if (isPopoverDragging)
212
+ return;
213
+ clearHoverOverlays();
214
+ };
215
+ // Handle element click
216
+ const handleElementClick = (e) => {
217
+ if (!isVisualEditMode)
218
+ return;
219
+ const target = e.target;
220
+ // Let layer dropdown clicks pass through without interference
221
+ if (target.closest(`[${LAYER_DROPDOWN_ATTR}]`))
222
+ return;
223
+ // Let clicks inside the editable element pass through to the browser
224
+ // so the user can reposition the cursor and select text naturally.
225
+ if (inlineEdit.enabled && target instanceof HTMLElement && target.contentEditable === "true") {
226
+ return;
227
+ }
228
+ // Clicking outside the editable element exits inline editing mode.
229
+ if (inlineEdit.isEditing()) {
230
+ e.preventDefault();
231
+ e.stopPropagation();
232
+ e.stopImmediatePropagation();
233
+ inlineEdit.stopEditing();
234
+ return;
235
+ }
236
+ // Close dropdowns when clicking anywhere in iframe if a dropdown is open
237
+ if (isDropdownOpen) {
238
+ e.preventDefault();
239
+ e.stopPropagation();
240
+ e.stopImmediatePropagation();
241
+ window.parent.postMessage({ type: "close-dropdowns" }, "*");
242
+ return;
243
+ }
244
+ // Prevent clicking on SVG path elements
245
+ if (target.tagName.toLowerCase() === "path") {
246
+ return;
247
+ }
248
+ // Prevent default behavior immediately when in visual edit mode
249
+ e.preventDefault();
250
+ e.stopPropagation();
251
+ e.stopImmediatePropagation();
252
+ // Support both data-source-location and data-visual-selector-id
253
+ const element = target.closest("[data-source-location], [data-visual-selector-id]");
254
+ if (!element) {
255
+ return;
256
+ }
257
+ const htmlElement = element;
258
+ const visualSelectorId = getElementSelectorId(element);
259
+ const isAlreadySelected = selectedElementId === visualSelectorId &&
260
+ htmlElement.dataset.selected === "true";
261
+ if (isAlreadySelected && inlineEdit.enabled && inlineEdit.canEdit(htmlElement)) {
262
+ inlineEdit.startEditing(htmlElement);
263
+ return;
264
+ }
265
+ inlineEdit.stopEditing();
266
+ if (inlineEdit.enabled) {
267
+ inlineEdit.markElementsSelected(findElementsById(visualSelectorId));
268
+ }
269
+ const selectedOverlay = selectElement(element);
270
+ layerController.attachToOverlay(selectedOverlay, element);
271
+ };
272
+ const unselectElement = () => {
273
+ inlineEdit.stopEditing();
274
+ clearSelection();
275
+ };
276
+ const updateElementClassesAndReposition = (visualSelectorId, classes) => {
277
+ const elements = findElementsById(visualSelectorId);
278
+ if (elements.length === 0)
279
+ return;
280
+ updateElementClasses(elements, classes);
281
+ // Use a small delay to allow the browser to recalculate layout before repositioning
282
+ setTimeout(() => {
283
+ // Reposition selected overlays
284
+ if (selectedElementId === visualSelectorId) {
285
+ selectedOverlays.forEach((overlay, index) => {
286
+ if (index < elements.length) {
287
+ positionOverlay(overlay, elements[index]);
288
+ }
289
+ });
290
+ }
291
+ // Reposition hover overlays if needed
292
+ if (currentHighlightedElements.length > 0) {
293
+ const hoveredElement = currentHighlightedElements[0];
294
+ const hoveredId = hoveredElement?.dataset?.visualSelectorId;
295
+ if (hoveredId === visualSelectorId) {
296
+ hoverOverlays.forEach((overlay, index) => {
297
+ if (index < currentHighlightedElements.length) {
298
+ positionOverlay(overlay, currentHighlightedElements[index]);
299
+ }
300
+ });
301
+ }
302
+ }
303
+ }, REPOSITION_DELAY_MS);
304
+ };
305
+ // Update element attribute by visual selector ID
306
+ const updateElementAttributeAndReposition = (visualSelectorId, attribute, value) => {
307
+ const elements = findElementsById(visualSelectorId);
308
+ if (elements.length === 0)
309
+ return;
310
+ updateElementAttribute(elements, attribute, value);
311
+ // Reposition overlays after attribute change (e.g. image src swap can affect layout)
312
+ setTimeout(() => {
313
+ if (selectedElementId === visualSelectorId) {
314
+ selectedOverlays.forEach((overlay, index) => {
315
+ if (index < elements.length) {
316
+ positionOverlay(overlay, elements[index]);
317
+ }
318
+ });
319
+ }
320
+ }, REPOSITION_DELAY_MS);
321
+ };
322
+ const updateElementContent = (visualSelectorId, content, arrIndex) => {
323
+ let elements = findElementsById(visualSelectorId);
324
+ if (elements.length === 0) {
325
+ return;
326
+ }
327
+ if (arrIndex != null) {
328
+ elements = elements.filter((el) => el.dataset.arrIndex === String(arrIndex));
329
+ }
330
+ elements.forEach((element) => {
331
+ element.innerText = content;
332
+ });
333
+ setTimeout(() => {
334
+ if (selectedElementId === visualSelectorId) {
335
+ selectedOverlays.forEach((overlay, index) => {
336
+ if (index < elements.length) {
337
+ positionOverlay(overlay, elements[index]);
338
+ }
339
+ });
340
+ }
341
+ }, REPOSITION_DELAY_MS);
342
+ };
343
+ // --- Layer dropdown controller ---
344
+ const layerController = createLayerController({
345
+ createPreviewOverlay: (element) => {
346
+ const overlay = createOverlay(false);
347
+ overlay.style.zIndex = "9998";
348
+ document.body.appendChild(overlay);
349
+ positionOverlay(overlay, element);
350
+ return overlay;
351
+ },
352
+ getSelectedElementId: () => selectedElementId,
353
+ selectElement,
354
+ onDeselect: notifyDeselection,
355
+ });
356
+ // Toggle visual edit mode
357
+ const toggleVisualEditMode = (isEnabled) => {
358
+ isVisualEditMode = isEnabled;
359
+ if (!isEnabled) {
360
+ inlineEdit.stopEditing();
361
+ clearSelection();
362
+ layerController.cleanup();
363
+ clearHoverOverlays();
364
+ currentHighlightedElements = [];
365
+ document.body.style.cursor = "default";
366
+ document.removeEventListener("mouseover", handleMouseOver);
367
+ document.removeEventListener("mouseout", handleMouseOut);
368
+ document.removeEventListener("click", handleElementClick, true);
369
+ }
370
+ else {
371
+ document.body.style.cursor = "crosshair";
372
+ document.addEventListener("mouseover", handleMouseOver);
373
+ document.addEventListener("mouseout", handleMouseOut);
374
+ document.addEventListener("click", handleElementClick, true);
375
+ }
376
+ };
377
+ // Handle scroll events to update popover position
378
+ const handleScroll = () => {
379
+ if (selectedElementId) {
380
+ const elements = findElementsById(selectedElementId);
381
+ if (elements.length > 0) {
382
+ const element = elements[0];
383
+ const rect = element.getBoundingClientRect();
384
+ const viewportHeight = window.innerHeight;
385
+ const viewportWidth = window.innerWidth;
386
+ const isInViewport = rect.top < viewportHeight &&
387
+ rect.bottom > 0 &&
388
+ rect.left < viewportWidth &&
389
+ rect.right > 0;
390
+ const elementPosition = {
391
+ top: rect.top,
392
+ left: rect.left,
393
+ right: rect.right,
394
+ bottom: rect.bottom,
395
+ width: rect.width,
396
+ height: rect.height,
397
+ centerX: rect.left + rect.width / 2,
398
+ centerY: rect.top + rect.height / 2,
399
+ };
400
+ window.parent.postMessage({
401
+ type: "element-position-update",
402
+ position: elementPosition,
403
+ isInViewport: isInViewport,
404
+ visualSelectorId: selectedElementId,
405
+ }, "*");
406
+ }
407
+ }
408
+ };
409
+ // Handle messages from parent window
410
+ const handleMessage = (event) => {
411
+ const message = event.data;
412
+ switch (message.type) {
413
+ case "toggle-visual-edit-mode":
414
+ toggleVisualEditMode(message.data.enabled);
415
+ if (message.data.specs?.newInlineEditEnabled !== undefined) {
416
+ inlineEdit.enabled = message.data.specs.newInlineEditEnabled;
417
+ }
418
+ break;
419
+ case "update-classes":
420
+ if (message.data && message.data.classes !== undefined) {
421
+ updateElementClassesAndReposition(message.data.visualSelectorId, message.data.classes);
422
+ }
423
+ else {
424
+ console.warn("[VisualEditAgent] Invalid update-classes message:", message);
425
+ }
426
+ break;
427
+ case "update-attribute":
428
+ if (message.data &&
429
+ message.data.visualSelectorId &&
430
+ message.data.attribute !== undefined &&
431
+ message.data.value !== undefined) {
432
+ updateElementAttributeAndReposition(message.data.visualSelectorId, message.data.attribute, message.data.value);
433
+ }
434
+ else {
435
+ console.warn("[VisualEditAgent] Invalid update-attribute message:", message);
436
+ }
437
+ break;
438
+ case "unselect-element":
439
+ unselectElement();
440
+ break;
441
+ case "refresh-page":
442
+ window.location.reload();
443
+ break;
444
+ case "update-content":
445
+ if (message.data && message.data.content !== undefined) {
446
+ updateElementContent(message.data.visualSelectorId, message.data.content, message.data.arrIndex);
447
+ }
448
+ else {
449
+ console.warn("[VisualEditAgent] Invalid update-content message:", message);
450
+ }
451
+ break;
452
+ case "request-element-position":
453
+ if (selectedElementId) {
454
+ const elements = findElementsById(selectedElementId);
455
+ if (elements.length > 0) {
456
+ const element = elements[0];
457
+ const rect = element.getBoundingClientRect();
458
+ const viewportHeight = window.innerHeight;
459
+ const viewportWidth = window.innerWidth;
460
+ const isInViewport = rect.top < viewportHeight &&
461
+ rect.bottom > 0 &&
462
+ rect.left < viewportWidth &&
463
+ rect.right > 0;
464
+ const elementPosition = {
465
+ top: rect.top,
466
+ left: rect.left,
467
+ right: rect.right,
468
+ bottom: rect.bottom,
469
+ width: rect.width,
470
+ height: rect.height,
471
+ centerX: rect.left + rect.width / 2,
472
+ centerY: rect.top + rect.height / 2,
473
+ };
474
+ window.parent.postMessage({
475
+ type: "element-position-update",
476
+ position: elementPosition,
477
+ isInViewport: isInViewport,
478
+ visualSelectorId: selectedElementId,
479
+ }, "*");
480
+ }
481
+ }
482
+ break;
483
+ case "popover-drag-state":
484
+ if (message.data && message.data.isDragging !== undefined) {
485
+ isPopoverDragging = message.data.isDragging;
486
+ if (message.data.isDragging) {
487
+ clearHoverOverlays();
488
+ }
489
+ }
490
+ break;
491
+ case "dropdown-state":
492
+ if (message.data && message.data.isOpen !== undefined) {
493
+ isDropdownOpen = message.data.isOpen;
494
+ if (message.data.isOpen) {
495
+ clearHoverOverlays();
496
+ }
497
+ }
498
+ break;
499
+ case "toggle-inline-edit-mode":
500
+ if (message.data) {
501
+ inlineEdit.handleToggleMessage(message.data);
502
+ }
503
+ break;
504
+ default:
505
+ break;
506
+ }
507
+ };
508
+ // Handle window resize to reposition overlays
509
+ const handleResize = () => {
510
+ if (selectedElementId) {
511
+ const elements = findElementsById(selectedElementId);
512
+ selectedOverlays.forEach((overlay, index) => {
513
+ if (index < elements.length) {
514
+ positionOverlay(overlay, elements[index]);
515
+ }
516
+ });
517
+ }
518
+ if (currentHighlightedElements.length > 0) {
519
+ hoverOverlays.forEach((overlay, index) => {
520
+ if (index < currentHighlightedElements.length) {
521
+ positionOverlay(overlay, currentHighlightedElements[index]);
522
+ }
523
+ });
524
+ }
525
+ };
526
+ // Initialize: Add IDs to elements that don't have them but have linenumbers
527
+ const elementsWithLineNumber = document.querySelectorAll("[data-linenumber]:not([data-visual-selector-id])");
528
+ elementsWithLineNumber.forEach((el, index) => {
529
+ const htmlEl = el;
530
+ const id = `visual-id-${htmlEl.dataset.filename}-${htmlEl.dataset.linenumber}-${index}`;
531
+ htmlEl.dataset.visualSelectorId = id;
532
+ });
533
+ // Create mutation observer to detect layout changes
534
+ const mutationObserver = new MutationObserver((mutations) => {
535
+ const needsUpdate = mutations.some((mutation) => {
536
+ const hasVisualId = (node) => {
537
+ if (node.nodeType === Node.ELEMENT_NODE) {
538
+ const el = node;
539
+ if (el.dataset && el.dataset.visualSelectorId) {
540
+ return true;
541
+ }
542
+ for (let i = 0; i < el.children.length; i++) {
543
+ if (hasVisualId(el.children[i])) {
544
+ return true;
545
+ }
546
+ }
547
+ }
548
+ return false;
549
+ };
550
+ const isLayoutChange = mutation.type === "attributes" &&
551
+ (mutation.attributeName === "style" ||
552
+ mutation.attributeName === "class" ||
553
+ mutation.attributeName === "width" ||
554
+ mutation.attributeName === "height");
555
+ return isLayoutChange && hasVisualId(mutation.target);
556
+ });
557
+ if (needsUpdate) {
558
+ setTimeout(handleResize, REPOSITION_DELAY_MS);
559
+ }
560
+ });
561
+ // Set up event listeners
562
+ window.addEventListener("message", handleMessage);
563
+ window.addEventListener("scroll", handleScroll, true);
564
+ document.addEventListener("scroll", handleScroll, true);
565
+ window.addEventListener("resize", handleResize);
566
+ window.addEventListener("scroll", handleResize);
567
+ // Start observing DOM mutations
568
+ mutationObserver.observe(document.body, {
569
+ attributes: true,
570
+ childList: true,
571
+ subtree: true,
572
+ attributeFilter: ["style", "class", "width", "height"],
573
+ });
574
+ // Send ready message to parent
575
+ window.parent.postMessage({ type: "visual-edit-agent-ready" }, "*");
576
+ }
2
577
  //# 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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"}