feat(markdown): add double-click → edit mode via SelectionManager callback
This commit is contained in:
@@ -85,6 +85,7 @@ export class SelectionManager {
|
|||||||
|
|
||||||
private _onDoubleClickText: ((item: SceneItem) => void) | null = null;
|
private _onDoubleClickText: ((item: SceneItem) => void) | null = null;
|
||||||
private _onDoubleClickImage: ((item: SceneItem) => void) | null = null;
|
private _onDoubleClickImage: ((item: SceneItem) => void) | null = null;
|
||||||
|
private _onDoubleClickMarkdown: ((item: SceneItem) => void) | null = null;
|
||||||
|
|
||||||
private _enabled = true;
|
private _enabled = true;
|
||||||
|
|
||||||
@@ -168,6 +169,11 @@ export class SelectionManager {
|
|||||||
this._onDoubleClickImage = fn;
|
this._onDoubleClickImage = fn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Called on double-click of a markdown item (for edit mode). */
|
||||||
|
set onDoubleClickMarkdown(fn: (item: SceneItem) => void) {
|
||||||
|
this._onDoubleClickMarkdown = fn;
|
||||||
|
}
|
||||||
|
|
||||||
/** Select only this item, deselecting everything else. */
|
/** Select only this item, deselecting everything else. */
|
||||||
selectOnly(id: string): void {
|
selectOnly(id: string): void {
|
||||||
this.selectedIds.clear();
|
this.selectedIds.clear();
|
||||||
@@ -393,6 +399,8 @@ export class SelectionManager {
|
|||||||
this._onDoubleClickText?.(item);
|
this._onDoubleClickText?.(item);
|
||||||
} else if (item.type === 'image' || item.type === 'drawing') {
|
} else if (item.type === 'image' || item.type === 'drawing') {
|
||||||
this._onDoubleClickImage?.(item);
|
this._onDoubleClickImage?.(item);
|
||||||
|
} else if (item.type === 'markdown') {
|
||||||
|
this._onDoubleClickMarkdown?.(item);
|
||||||
}
|
}
|
||||||
this._lastClickTime = 0;
|
this._lastClickTime = 0;
|
||||||
this._lastClickItemId = null;
|
this._lastClickItemId = null;
|
||||||
|
|||||||
@@ -158,6 +158,14 @@ export function useCanvasSetup(deps: CanvasSetupDeps) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Double-click markdown → enter edit mode
|
||||||
|
selection.onDoubleClickMarkdown = (item) => {
|
||||||
|
if (mdOverlayRef.current) {
|
||||||
|
mdOverlayRef.current.setEditing(item.id);
|
||||||
|
selection.setEnabled(false);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// Refresh transform box when item dimensions change (e.g. video metadata loaded)
|
// Refresh transform box when item dimensions change (e.g. video metadata loaded)
|
||||||
scene.onItemDimensionsChanged = (itemId: string) => {
|
scene.onItemDimensionsChanged = (itemId: string) => {
|
||||||
if (selection.selectedIds.has(itemId)) {
|
if (selection.selectedIds.has(itemId)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user