feat(studio): always-on crop with reposition handle, drop crop mode (#2090)

Crop is now part of the element selection instead of a separate mode. Selecting
a croppable element shows edge handles just outside each side and, once cropped,
the full content with the cropped-away area dimmed plus a center reposition
handle to pan the crop window. Dragging the body moves the element, edge handles
crop, the center handle pans; corners stay free for the resize handle. Removes
the crop-mode toggle (toolbar + property-panel buttons), the cropMode/
cropAvailable player-store state, and the double-click-to-crop gesture. The
clip-path inset model is unchanged.
This commit is contained in:
Miguel Ángel
2026-07-08 22:24:26 -04:00
committed by GitHub
parent 6f0b57d608
commit 623f91d6a1
15 changed files with 217 additions and 307 deletions
@@ -51,8 +51,6 @@ export interface StudioRightPanelProps {
recordingState?: "idle" | "recording" | "preview";
recordingDuration?: number;
onToggleRecording?: () => void;
cropMode?: boolean;
onCropModeChange?: (active: boolean) => void;
/** Dependencies for the Slideshow persist callback, threaded from App.tsx. */
sdkSession: Composition | null;
reloadPreview: () => void;
@@ -73,8 +71,6 @@ export function StudioRightPanel({
recordingState,
recordingDuration,
onToggleRecording,
cropMode,
onCropModeChange,
sdkSession,
reloadPreview,
domEditSaveTimestampRef,
@@ -400,8 +396,6 @@ export function StudioRightPanel({
recordingState={recordingState}
recordingDuration={recordingDuration}
onToggleRecording={onToggleRecording}
cropMode={cropMode}
onCropModeChange={onCropModeChange}
/>
);