feat(map-editor): 站点/路径视口样式实时编辑与画布快捷键联动
- reflection API 新增 viewport-style GET/PATCH 及 ARGB 无符号化工具 - 属性面板「类型默认」重构为选中对象的视口样式实时编辑(防抖 + 序号防竞态) - 画布 iframe 聚焦时经 SSE 转发撤销/重做/删除,移除冗余的坐标添加菜单 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -49,6 +49,10 @@ export interface SelectionDetailEvent {
|
||||
names: string[]
|
||||
}
|
||||
|
||||
export interface WorkspaceShortcutEvent {
|
||||
action: 'undo' | 'redo' | 'delete'
|
||||
}
|
||||
|
||||
export interface MapEditStreamHandlers {
|
||||
onAlarm?: (e: AlarmEvent) => void
|
||||
onObjectCreated?: (e: ObjectChangeEvent) => void
|
||||
@@ -57,6 +61,10 @@ export interface MapEditStreamHandlers {
|
||||
onObjectBatchChanged?: (e: { count: number; source?: string }) => void
|
||||
onPickResult?: (e: PickResultEvent) => void
|
||||
onSelectionDetail?: (e: SelectionDetailEvent) => void
|
||||
/** iframe 画布聚焦时由 SimpleLite 经 SSE 转发的撤销/重做/删除。 */
|
||||
onWorkspaceShortcut?: (e: WorkspaceShortcutEvent) => void
|
||||
/** 视口样式(站点/路径 Painter)在 Web 或桌面对话框中变更后广播。 */
|
||||
onViewportStyleUpdated?: () => void
|
||||
}
|
||||
|
||||
export function useMapEditStream(handlers: MapEditStreamHandlers) {
|
||||
@@ -87,6 +95,12 @@ export function useMapEditStream(handlers: MapEditStreamHandlers) {
|
||||
case 'selection-detail':
|
||||
handlers.onSelectionDetail?.(payload as unknown as SelectionDetailEvent)
|
||||
break
|
||||
case 'workspace-shortcut':
|
||||
handlers.onWorkspaceShortcut?.(payload as unknown as WorkspaceShortcutEvent)
|
||||
break
|
||||
case 'viewport-style-updated':
|
||||
handlers.onViewportStyleUpdated?.()
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -49,7 +49,9 @@ export const KNOWN_EVENT_KINDS = [
|
||||
'project-loaded',
|
||||
'car-state',
|
||||
'mission-status',
|
||||
'monitor-config-updated'
|
||||
'monitor-config-updated',
|
||||
'workspace-shortcut',
|
||||
'viewport-style-updated'
|
||||
] as const
|
||||
|
||||
type Listener = (event: StreamEvent) => void
|
||||
|
||||
Reference in New Issue
Block a user