Skip to content

Commit 92681a4

Browse files
committed
feat: refactor search panel commands and update props for CodeEditor
1 parent 016018e commit 92681a4

File tree

3 files changed

+24
-17
lines changed

3 files changed

+24
-17
lines changed

src/Shared/Components/CodeEditor/CodeEditor.tsx

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import {
3333
} from '@uiw/react-codemirror'
3434

3535
import { DEFAULT_JSON_SCHEMA_URI, MODES } from '@Common/Constants'
36-
import { cleanKubeManifest } from '@Common/Helper'
36+
import { cleanKubeManifest, noop } from '@Common/Helper'
3737
import { getUniqueId } from '@Shared/Helpers'
3838
import { AppThemeType, useTheme } from '@Shared/Providers'
3939

@@ -43,8 +43,8 @@ import { getCodeEditorTheme } from './CodeEditor.theme'
4343
import { CodeEditorRenderer } from './CodeEditorRenderer'
4444
import {
4545
blurOnEscape,
46-
openSearchPanel,
47-
openSearchPanelWithReplace,
46+
getOpenSearchPanel,
47+
getOpenSearchPanelWithReplace,
4848
replaceAll,
4949
showReplaceFieldState,
5050
} from './Commands'
@@ -89,6 +89,7 @@ const CodeEditor = <DiffView extends boolean = false>({
8989
onFocus,
9090
autoFocus,
9191
disableSearch = false,
92+
onOpenSearchPanel = noop,
9293
}: CodeEditorProps<DiffView>) => {
9394
// HOOKS
9495
const { appTheme } = useTheme()
@@ -203,9 +204,11 @@ const CodeEditor = <DiffView extends boolean = false>({
203204
themeExtension,
204205
keymap.of([
205206
...vscodeKeymap.filter(({ key }) => key !== 'Mod-Alt-Enter' && key !== 'Mod-Enter' && key !== 'Mod-f'),
206-
...(!disableSearch ? [{ key: 'Mod-f', run: openSearchPanel, scope: 'editor search-panel' }] : []),
207+
...(!disableSearch
208+
? [{ key: 'Mod-f', run: getOpenSearchPanel(onOpenSearchPanel), scope: 'editor search-panel' }]
209+
: []),
207210
{ key: 'Mod-Enter', run: replaceAll, scope: 'editor search-panel' },
208-
{ key: 'Mod-Alt-f', run: openSearchPanelWithReplace, scope: 'editor search-panel' },
211+
{ key: 'Mod-Alt-f', run: getOpenSearchPanelWithReplace(onOpenSearchPanel), scope: 'editor search-panel' },
209212
{ key: 'Escape', run: blurOnEscape, stopPropagation: true },
210213
]),
211214
indentationMarkers(),

src/Shared/Components/CodeEditor/Commands/findAndReplace.ts

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -37,19 +37,22 @@ export const getShowReplaceField = (state: EditorState) => {
3737
return curState || false
3838
}
3939

40-
export const openSearchPanel: Command = (view: EditorView) => {
41-
view.dispatch({
42-
effects: [setShowReplaceField.of(searchPanelOpen(view.state) ? getShowReplaceField(view.state) : false)],
43-
})
44-
cmOpenSearchPanel(view)
45-
return true
46-
}
40+
export const getOpenSearchPanel: (onOpenSearchPanel: () => void) => Command =
41+
(onOpenSearchPanel: () => void) => (view: EditorView) => {
42+
view.dispatch({
43+
effects: [setShowReplaceField.of(searchPanelOpen(view.state) ? getShowReplaceField(view.state) : false)],
44+
})
45+
cmOpenSearchPanel(view)
46+
onOpenSearchPanel()
47+
return true
48+
}
4749

48-
export const openSearchPanelWithReplace: Command = (view: EditorView) => {
49-
openSearchPanel(view)
50-
view.dispatch({ effects: [setShowReplaceField.of(!view.state.readOnly && true)] })
51-
return true
52-
}
50+
export const getOpenSearchPanelWithReplace: (onOpenSearchPanel: () => void) => Command =
51+
(onOpenSearchPanel: () => void) => (view: EditorView) => {
52+
getOpenSearchPanel(onOpenSearchPanel)(view)
53+
view.dispatch({ effects: [setShowReplaceField.of(!view.state.readOnly && true)] })
54+
return true
55+
}
5356

5457
export const replaceAll: Command = (view: EditorView) => {
5558
const isReplaceEnabled = getShowReplaceField(view.state)

src/Shared/Components/CodeEditor/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ export type CodeEditorProps<DiffView extends boolean = false> = {
7878
disableSearch?: boolean
7979
diffView?: DiffView
8080
theme?: AppThemeType
81+
onOpenSearchPanel?: () => void
8182
} & CodeEditorPropsBasedOnDiffView<DiffView>
8283

8384
export interface GetCodeEditorHeightReturnType {

0 commit comments

Comments
 (0)