feat(refboard): canvas polish — transform box sync, dot grid, snap tuning, perf fixes
- Fix transform box not updating after alignment/arrangement/normalize/flip operations (shortcuts, context menu, and selection toolbar all fixed with DRY _opUpdate helper) - Replace 100ms polling loop with event-driven viewport updates (moved + wheel-scroll) - Add adaptive dot grid background that responds to zoom/pan - Reduce snap guide threshold from 8px to 4px for subtler snapping - Remove PresenceOverlay (remote selection highlighting) — too heavy for minimal benefit - Offset multiple dropped images so they don't overlap - Add new canvas modules: SnapGuides, clipboard, grouping, FrameSprite, DrawingSprite, LaserPointer, context-menu-items, SelectionToolbar, Minimap - Extract Editor hooks into dedicated files (useBoardLoader, useCanvasSetup, useShortcutHandler, useLayerPanel, useSaveManager, useFollowMode) - Sync improvements: real-time transform broadcast, board rooms, viewport sync
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
|
||||
export interface SceneObject {
|
||||
id: string;
|
||||
type: 'image' | 'video' | 'text' | 'group';
|
||||
type: 'image' | 'video' | 'text' | 'group' | 'drawing';
|
||||
x: number;
|
||||
y: number;
|
||||
w: number;
|
||||
@@ -42,12 +42,22 @@ export interface TextObject extends SceneObject {
|
||||
fontFamily: string;
|
||||
}
|
||||
|
||||
export interface DrawingObject extends SceneObject {
|
||||
type: 'drawing';
|
||||
points: number[]; // flat array: [x0, y0, x1, y1, ...]
|
||||
color: string;
|
||||
strokeWidth: number;
|
||||
}
|
||||
|
||||
export interface GroupObject extends SceneObject {
|
||||
type: 'group';
|
||||
children: string[];
|
||||
bgColor?: string; // frame background color (e.g. '#2a2a3a'), empty/undefined = transparent
|
||||
label?: string; // frame title label
|
||||
padding?: number; // inner padding around children (default 12)
|
||||
}
|
||||
|
||||
export type AnySceneObject = ImageObject | VideoObject | TextObject | GroupObject;
|
||||
export type AnySceneObject = ImageObject | VideoObject | TextObject | DrawingObject | GroupObject;
|
||||
|
||||
export interface SceneData {
|
||||
v: 2;
|
||||
|
||||
Reference in New Issue
Block a user