@@ -3,7 +3,7 @@ import StateInspector from '@front/features/inspector/StateInspector.vue'
3
3
import EmptyPane from ' @front/features/layout/EmptyPane.vue'
4
4
5
5
import { computed , defineComponent , ref , watch } from ' vue'
6
- import { SharedData , copyToClipboard , getComponentDisplayName } from ' @vue-devtools/shared-utils'
6
+ import { SharedData , copyToClipboard , getComponentDisplayName , openInEditor } from ' @vue-devtools/shared-utils'
7
7
import { onKeyDown } from ' @front/util/keyboard'
8
8
import RenderCode from ' ./RenderCode.vue'
9
9
import { useSelectedComponent } from ' ./composable'
@@ -16,6 +16,8 @@ export default defineComponent({
16
16
},
17
17
18
18
setup() {
19
+ const openInEditorButton = ref ()
20
+
19
21
const selectedComponent = useSelectedComponent ()
20
22
const displayName = computed (() => getComponentDisplayName (selectedComponent .data .value ?.name ?? ' ' , SharedData .componentNameStyle ))
21
23
@@ -38,6 +40,14 @@ export default defineComponent({
38
40
stateFilterInput .value .focus ()
39
41
return false
40
42
}
43
+
44
+ if (([' o' , ' o' , ' щ' ]).includes (event .key ) && event .altKey ) {
45
+ const file = selectedComponent .data .value ?.file
46
+ if (file ) {
47
+ openInEditor (file )
48
+ }
49
+ return false
50
+ }
41
51
}, true )
42
52
43
53
const sameApp = computed (() => selectedComponent .data .value ?.id .split (' :' )[0 ] === selectedComponentId .value ?.split (' :' )[0 ])
@@ -63,6 +73,7 @@ export default defineComponent({
63
73
sameApp ,
64
74
copyName ,
65
75
showCopiedName ,
76
+ openInEditorButton ,
66
77
}
67
78
},
68
79
})
@@ -128,6 +139,7 @@ export default defineComponent({
128
139
129
140
<VueButton
130
141
v-if =" fileIsPath"
142
+ v-ref =" openInEditorButton"
131
143
v-tooltip =" {
132
144
content: $t('ComponentInspector.openInEditor.tooltip', { file: data.file }),
133
145
html: true,
0 commit comments