• Mohamed Aziz Mejri's avatar
    Visual editor (Pro only) (#1828) · 352d4330
    Mohamed Aziz Mejri 提交于
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    <!-- This is an auto-generated description by cubic. -->
    ---
    ## Summary by cubic
    Prototype visual editing mode for the preview app. Toggle the mode, pick
    elements (single or multiple), and edit margin, padding, border,
    background, static text, and text styles with live updates, then save
    changes back to code.
    
    - **New Features**
    - Pen tool button to enable/disable visual editing in the preview and
    toggle single/multi select; pro-only.
    - Inline toolbar anchored to the selected element for Margin (X/Y),
    Padding (X/Y), Border (width/radius/color), Background color, Edit Text
    (when static), and Text Style (font size/weight/color/font family).
    - Reads computed styles from the iframe and applies changes in real
    time; auto-appends px; overlay updates on scroll/resize.
    - Save/Discard dialog batches edits and writes Tailwind classes to
    source files via IPC; uses AST/recast to update className and text,
    replacing conflicting classes by prefix; supports multiple components.
    - New visual editor worker to get/apply styles and enable inline text
    editing via postMessage; selector client updated for coordinates
    streaming and highlight/deselect.
    - Proxy injects the visual editor client; new atoms track selected
    component, coordinates, and pending changes; component analysis flags
    dynamic styling and static text.
      - Uses runtimeId to correctly target and edit duplicate components.
    
    - **Dependencies**
      - Added @babel/parser for AST-based text updates.
      - Added recast for safer code transformations.
    
    <sup>Written for commit cdd50d33387a29103864f4743ae7570d64d61e93.
    Summary will update automatically on new commits.</sup>
    
    <!-- End of auto-generated description by cubic. -->
    352d4330