diff --git a/public/app/features/dashboard-scene/edit-pane/DashboardEditPane.tsx b/public/app/features/dashboard-scene/edit-pane/DashboardEditPane.tsx index 490ac81bd09..24847ad8a6e 100644 --- a/public/app/features/dashboard-scene/edit-pane/DashboardEditPane.tsx +++ b/public/app/features/dashboard-scene/edit-pane/DashboardEditPane.tsx @@ -4,7 +4,14 @@ import { useLocalStorage } from 'react-use'; import { GrafanaTheme2 } from '@grafana/data'; import { selectors } from '@grafana/e2e-selectors'; -import { SceneObjectState, SceneObjectBase, SceneObject, sceneGraph, useSceneObjectState } from '@grafana/scenes'; +import { + SceneObjectState, + SceneObjectBase, + SceneObject, + sceneGraph, + useSceneObjectState, + VizPanel, +} from '@grafana/scenes'; import { ElementSelectionContextItem, ElementSelectionContextState, @@ -18,8 +25,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'; @@ -102,10 +109,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); } }