diff --git a/public/app/features/dashboard-scene/edit-pane/DashboardEditPane.tsx b/public/app/features/dashboard-scene/edit-pane/DashboardEditPane.tsx index c03102bf873..a0fed577ebd 100644 --- a/public/app/features/dashboard-scene/edit-pane/DashboardEditPane.tsx +++ b/public/app/features/dashboard-scene/edit-pane/DashboardEditPane.tsx @@ -3,7 +3,14 @@ import { Resizable } from 're-resizable'; import { useLocalStorage } from 'react-use'; import { GrafanaTheme2 } from '@grafana/data'; -import { SceneObjectState, SceneObjectBase, SceneObject, sceneGraph, useSceneObjectState } from '@grafana/scenes'; +import { + SceneObjectState, + SceneObjectBase, + SceneObject, + sceneGraph, + useSceneObjectState, + VizPanel, +} from '@grafana/scenes'; import { ElementSelectionContextItem, ElementSelectionContextState, @@ -17,8 +24,8 @@ import { } from '@grafana/ui'; import { t, Trans } from 'app/core/internationalization'; -import { containsCloneKey, getOriginalKey, isInCloneChain } from '../utils/clone'; -import { getDashboardSceneFor } from '../utils/utils'; +import { containsCloneKey, getLastKeyFromClone, isInCloneChain } from '../utils/clone'; +import { findEditPanel, getDashboardSceneFor } from '../utils/utils'; import { DashboardOutline } from './DashboardOutline'; import { ElementEditPane } from './ElementEditPane'; @@ -101,10 +108,14 @@ export class DashboardEditPane extends SceneObjectBase { return; } - const elementId = containsCloneKey(element.id) ? getOriginalKey(element.id) : element.id; - - const obj = sceneGraph.findByKey(this, elementId); + let obj = sceneGraph.findByKey(this, element.id); if (obj) { + if (obj instanceof VizPanel && containsCloneKey(getLastKeyFromClone(element.id))) { + const sourceVizPanel = findEditPanel(this, element.id); + if (sourceVizPanel) { + obj = sourceVizPanel; + } + } this.selectObject(obj, element.id, options); } }